【问题标题】:How to export thousands of tables from large MySQL database如何从大型 MySQL 数据库中导出数千张表
【发布时间】:2017-11-22 04:13:03
【问题描述】:

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

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

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

【问题讨论】:

标签: mysql database wordpress


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    第一种方法可能行不通。无论如何,这是给你的另一个解决方案 -

    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
    

    【讨论】:

    • 谢谢,我尝试了类似的方法,但最后我发现 mydumper 命令更简单。
    【解决方案3】:

    到目前为止,我最好的解决方案是创建一个带有数字数组(博客 ID)的 shell 脚本,该数组将循环,然后使用 mydumper 命令将 SQL 表导出到单个目录。该命令如下所示:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      相关资源
      最近更新 更多