Saya perlu mengambil dump database yang berisi 50 tabel aneh yang saya ingin mengecualikan sekitar 15 aneh yang memiliki awalan exam_
Saya mencoba mysqldump --ignore-table=dbname.exam_*
dan bahkan mencoba. --ignore-table=dbname.exam_%
Itu tidak berhasil seperti yang diharapkan. Saya harus menggunakan --ignore-table
beberapa kali.
Sunting: Saya telah melihat beberapa skrip shell yang berisi daftar tables not like tablename_%
dan meneruskannya mysqldump
.
Namun, saya ingin tahu apakah ada opsi di mysqldump atau mysql, untuk melakukan hal yang sama tanpa harus skrip.
Sunting-tambah: Akhirnya menggunakan skrip untuk membuang tabel DB tidak termasuk, menggunakan ignore-table=
beberapa kali.
TABLES=`mysql --skip-column-names [DB-NAME] -e 'show tables' | grep -v 'exam_'`
mysqldump [DB-NAME] $TABLES > mysqldump.sql
Jawaban:
Tidak, tidak ada opsi seperti itu dalam
mysqldump
perintah, seperti yang dikatakan oleh para dokter :sumber
mysqldump --all-databases
hanya untuk melihat apakah kesalahan keluar, atau hanya melompat ke dDB berikutnya ..Anda bisa mendapatkan nama tabel yang Anda inginkan dari mysql, dan kemudian menggunakannya untuk membangun parameter dump mysql Anda.
Pada contoh di bawah ini, ganti saja "someprefix" dengan awalan Anda (mis. "Exam_").
The
SHOW TABLES
query dapat diubah untuk menemukan set lain dari tabel. Atau Anda bisa menggunakan kueri terhadapINFORMATION_SCHEMA
tabel untuk menggunakan lebih banyak kriteria.Ini dibangun dengan bantuan dari jawaban ini tentang mendapatkan "semua tabel dengan tidak termasuk dalam bash": https://stackoverflow.com/a/9232076/631764
dan jawaban ini tentang melewatkan tabel dengan beberapa bash yang digunakan: https://stackoverflow.com/a/425172/631764
sumber
Saya pikir menggunakan
information_schema
adalah rute yang baik untuk mengambil ini.sumber