Saya memiliki 2-3 nama kolom berbeda yang ingin saya cari di seluruh DB dan daftar semua tabel yang memiliki kolom tersebut. Adakah script yang mudah?
mysql
information-schema
Jobi Joy
sumber
sumber
Jawaban:
Untuk mendapatkan semua tabel dengan kolom
columnA
atauColumnB
dalam databaseYourDatabase
:sumber
DATABASE()
alih-alih string untuk mencari di database yang saat ini dipilih.sumber
TABLE_SCHEMA
ke bidang pengembalian diatur untuk melihat semua database + tabel yang berisi nama kolom itu.show tables;
. Adakah yang bisa menjelaskan mengapa ini bisa terjadi?Lebih sederhana dilakukan dalam satu baris SQL:
sumber
sumber
Dalam versi yang tidak memiliki
information_schema
(versi yang lebih lama, atau beberapa ndb), Anda dapat membuang struktur tabel dan mencari kolom secara manual.Sekarang cari nama kolom
some_file.sql
menggunakan editor teks pilihan Anda, atau gunakan beberapa script awk bagus.Dan skrip sed sederhana untuk menemukan kolom, cukup ganti COLUMN_NAME dengan milik Anda:
Anda dapat menyalurkan dump langsung ke sed tetapi itu sepele.
sumber
Bagi mereka yang mencari kebalikan dari ini, yaitu mencari tabel yang tidak mengandung nama kolom tertentu, berikut adalah kueri ...
Ini sangat berguna ketika kami mulai menerapkan penggunaan
ai_col
kolom khusus InnoDB secara perlahan dan perlu mencari tahu dari 200 tabel kami mana yang belum ditingkatkan.sumber
Jika Anda ingin "Hanya mendapatkan semua tabel ", Kemudian gunakan kueri ini:
Jika Anda ingin " Untuk mendapatkan semua tabel dengan Kolom ", Kemudian gunakan kueri ini:
sumber
Gunakan kueri satu baris ini, ganti nama_kolom yang diinginkan dengan nama kolom Anda.
sumber
sumber
Masalah dengan information_schema adalah bisa sangat lambat. Lebih cepat menggunakan perintah SHOW.
Setelah Anda memilih basis data, Anda terlebih dahulu mengirim kueri SHOW TABLES. Dan kemudian Anda melakukan SHOW COLUMNS untuk masing-masing tabel.
Dalam PHP itu akan terlihat seperti
sumber
Itu ^^ akan mendapatkan tabel dengan ColumnA DAN ColumnB bukan ColumnA ATAU ColumnB seperti jawaban yang diterima
sumber