Nasıl bir bilgi tek bir dize için benim mysql sunucuda veritabanlarının tüm arama yapabilirsiniz

3 Cevap php

Benim sunuculardan birinde tabloları her düzinelerce, yaklaşık 150 farklı veritabanları var. Belirli bir kişinin adını içeren veritabanı görmek için arıyorum. Şu anda, ben indvidually her veritabanı aramak için phpmyadmin kullanıyorum, ama gerçekten tüm veritabanlarını bir kerede ve tüm tabloları aramak mümkün istiyorum. Bu mümkün mü? Bunu nasıl yapıyor hakkında gitmek istiyorsunuz?

3 Cevap

Bir çözüm, tüm veritabanı, tüm tabloları, tüm alanları ve tüm üzerinde döngü listelemek için, information_schema veritabanını kullanmak olacaktır ...


There is this script that could help for at least some part of the work : anywhereindb (quoting) :

This code is search all the tables and all the rows and columns in a MYSQL Database. The code is written in PHP. For faster result, we are only searching in the varchar field.

Harmen belirtildiği gibi Ancak, bu sadece bir veritabanı ile çalışır - Eğer sunucu üzerindeki her bir veritabanı üzerinde döngü için ona civarı bir şey sarmak gerekiyor demektir.

Bu konuda daha fazla bilgi almak için, Chapter 19. INFORMATION_SCHEMA Tables bir göz atın; Özellikle, sunucu üzerindeki tüm veritabanlarının adını içeren SCHEMATA tablo.


Here's another solution, based on a stored procedure -- which means less client/server calls, which might make it faster :
http://kedar.nitty-witty.com/miscpages/mysql-search-through-all-database-tables-columns-stored-procedure.php

Bu konuda gitmek için doğru yolu ilk etapta veri normalleştirmek olurdu!

Sen adını söylüyorlar - ama bu kadar bölünmüş ya da aynı alanda çoğu kişi en az 2 isim (bir soyadı ve isim) var mı? Onlar aynı alanda iseniz, o zaman ne sipariş görünüyor? onlar nasıl aktifleştirilir?

Veri nerede olabileceğini belirlemek için denemek için en etkili yolu (DBMS kapatmaya iken) veri arıyor ham veri dosyaları sifts C bir program yazmak olacaktır - ama bu sadece apppear hangi tablo size söyleyecektir Lütfen

Eğer ('SHOW veritabanları' çok seçkin bir deyimi gibi çalışır) Her veritabanı dolaşır bazı PHP yazmak gerekir ki başarısız, daha sonra veritabanındaki her tablo dolaşır, sonra her CHAR veya yeterince büyük VARCHAR sütun üzerinde filtreleme bir SELECT deyimi oluşturur Eğer ('AZALAN $ tablo' çalıştırmayı deneyin) arıyoruz adını basılı tutun.

İyi şanslar.

C.

Iyi cevabı muhtemelen bu yapmak istediğiniz ne sıklıkta bağlıdır. Haftada bir kez türü şeyler ad-hoc ise yukarıdaki cevapları iyidir.

(Tabi ki eğer geri kaynak veritabanına bir başvuru ile, ağır endeksli) aramak istediğiniz sütunlar nüfuslu: Eğer saniyede bir arama bu tür yapmak istiyorsanız, belki sadece bir tablo içeren bir "veri ambarı" veritabanı oluşturmak cron işi veya 150 veritabanlarında değişiklikler ile tahrik saklı yordamlar tarafından ...