我有一个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
答案 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/"
下一个挑战是弄清楚如何从原始数据库中删除所有导出的表......