如何从大型MySQL数据库中导出数千个表

时间:2017-11-22 04:13:03

标签: mysql database wordpress

我有一个MySQL数据库,在Wordpress多站点数据库中有数万个表,我需要导出数千个表,以便我可以将它们导入新数据库。

我知道我可以像这样使用mysqldump:“mysqldump -u user -p database_name table_1 table_2 table_3 > filename.sql”,但这种规模的最佳方法是什么?如果有帮助,表的名称如下:“wp_blogid_tablename”其中blogid是博客的ID(要导出大约1000个博客),tablename是许多不同表名之一,例如:< / p>

wp_8_commentmeta
wp_8_comments
wp_8_links
wp_8_options
wp_8_postmeta
wp_8_posts
wp_8_referer_blacklist
wp_8_referer_visitLog
wp_8_signups
wp_8_term_relationships
wp_8_term_taxonomy
wp_8_termmeta
wp_8_terms

3 个答案:

答案 0 :(得分:0)

你可以尝试这个但是没有经过测试 -

mysqldump -u user -p database_name table_blogid_* > wp_blogid.sql

答案 1 :(得分:0)

第一种方法可能不起作用。无论如何,这是另一个解决方案 -

mysqldump DBNAME $(mysql -D DBNAME -Bse "show tables like 'wp_8_%'") > wp_8.sql

或者你可以试试这个,先把表放到一个文件中 -

mysql -N information_schema -e "select table_name from tables where table_schema = 'databasename' and table_name like 'wp_8_%'" > wp_8_tables.txt

现在执行sqldump脚本以导出表格 -

mysqldump -u user -p database_name `cat wp_8_tables.txt` > wp_blogid.sql

答案 2 :(得分:0)

到目前为止,我最好的解决方案是使用一组数字(博客ID)创建一个shell脚本,它将循环然后使用mydumper命令将SQL表导出到单个目录。命令看起来像这样:

mydumper --database="mydbname" --outputdir="/path/dir/" --regex="mydbname\.wp_${i}_.*"

${i}是数组循环中的博客ID)

完成后,我可以使用myloader命令将所有sql文件加载到新数据库中:

myloader --database="mynewdbname" --directory="/path/dir/"

下一个挑战是弄清楚如何从原始数据库中删除所有导出的表......