it-swarm.asia

كيف يمكنك تحديد جدول (جداول) معينة؟

كيف يمكنني تفريغ جدول معين أو مجموعة من الجداول دون تضمين باقي الجداول ديسيبل؟

423
markdorison

إذا كنت تفريغ الجداول t1 و t2 و t3 من mydb

mysqldump -u... -p... mydb t1 t2 t3 > mydb_tables.sql

إذا كان لديك الكثير من الجداول في mydb وتريد تفريغ كل شيء باستثناء t1 و t2 و t3 ، فقم بذلك:

DBTODUMP=mydb
SQL="SET group_concat_max_len = 10240;"
SQL="${SQL} SELECT GROUP_CONCAT(table_name separator ' ')"
SQL="${SQL} FROM information_schema.tables WHERE table_schema='${DBTODUMP}'"
SQL="${SQL} AND table_name NOT IN ('t1','t2','t3')"
TBLIST=`mysql -u... -p... -AN -e"${SQL}"`
mysqldump -u... -p... ${DBTODUMP} ${TBLIST} > mydb_tables.sql

جربها !!!

تحديث 2014-03-06 10:15 EST

@ RoryDonohue أشار إلي أن GROUP_CONCAT تحتاج إلى تمديد أقصى طول لها. أضفت متغير الجلسة group_concat_max_len إلى إجابتي بحد أقصى يبلغ 10 آلاف. شكرا ،RoryDonohue.

571
RolandoMySQLDBA

ملاحظة للتوسع في الجواب RolandoMySQLDBA .

النص الذي تضمنه هو نهج رائع لإدراج (and table_name in) أو باستثناء (and table_name NOT in) قائمة الجداول.

إذا كنت بحاجة فقط إلى استبعاد جدول واحد أو جدولين ، فيمكنك استبعادهما بشكل فردي باستخدام --ignore-table اختيار:

mysqldump -u -p etc. --ignore-table=Database.Table1 --ignore-table=Database.Table2 > dump_file.sql
75
codewaggle

عندما يكون لديك أكثر من عدد قليل من الجداول فمن الأفضل تشغيل شيء مثل هذا:

mysql databasename -u [user] -p[password] -e 'show tables like "table_name_%"' 
       | grep -v Tables_in 
       | xargs mysqldump [databasename] -u [root] -p [password] > [target_file]

أو شيء من هذا القبيل:

mysqldump -u [user] -p[password] databasename `echo "show tables like 'table_name_%';" 
       | mysql -u[user] -p[password] databasename 
       | sed '/Tables_in/d'` > [target_file]

تذكر أنه يجب كتابة هذه الأوامر في سطر واحد فقط.

31
grosshat

يمكنك القيام بذلك ببساطة باستخدام الأمر أدناه:

mysqldump -uusername -ppassword dbname \
  --ignore-table=schema.tablename1    \
  --ignore-table=schema.tablename2    \
  --ignore-table=schema.tablename3 > mysqldump.sql
11
Vaibhav