【问题标题】:How to export mysql database structure only throught command line, but export some specific tables data from the specified in list如何仅通过命令行导出mysql数据库结构,但从列表中指定导出某些特定表数据
【发布时间】:2017-07-19 05:39:49
【问题描述】:

我想通过以下两个条件通过命令行导出MySQL数据库,

  1. 仅导出数据库表结构。
  2. 但是在导出数据时,我想导出命令中提到的指定表数据和结构。

我有一个包含 60 个表的数据库,其中一个名为 Country 的表包含静态值。所以我也想在导出的文件中导出它的数据,其余的表只包含导出文件中的结构。

谁能建议我使用 MySQL 命令根据上述条件转储数据库?

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    第一种方法:

    mysqldump --no-data -h <host> -u <username> -p<password> <database> > tables.sql

    这会将您的数据库表结构转储到文件tables.sql

    --no-data 选项指定不转储表格内容。

    第二种方法:

    (如果您想在批处理中更多地使用生成的.sql 文件,这可能很有用。)

    • 使用show create table 命令查看创建表的实际命令。
    • 创建一个 Bash 脚本,为要导出的每个表执行 MySQL 命令。将show create table <table_name> 的输出通过管道传输到文本文件。

    【讨论】:

      【解决方案2】:

      我认为您需要为此触发 2 个单独的命令。

      mysqldump -u root -p password --no-data --ignore-table=db_name.tbl_name db_name > db_name.sql
      

      上面的查询将转储数据库的所有结构,没有你的国家表的结构和数据。

      mysqldump -u root -p password db_name tbl_name >> db_name.sql
      

      这个会将 Country 表的结构和数据转储到同一个文件中。

      【讨论】:

      • 感谢 onkar 上述解决方案工作正常。但是如果假设我们有多个静态表要被忽略。
      • 您可以在单个命令中使用多个忽略语句 --ignore-table=db_name.tbl_name1 --ignore-table=db_name.tbl_name2 像这样。
      • 如果您尝试做的事情成功,请接受答案。
      猜你喜欢
      • 2015-03-14
      • 2011-04-30
      • 2021-08-04
      • 1970-01-01
      • 2014-09-20
      • 2013-05-20
      • 2023-03-30
      • 2018-04-04
      • 1970-01-01
      相关资源
      最近更新 更多