根据模式跳过 mysqldump 中的表格。

11 浏览
0 Comments

根据模式跳过 mysqldump 中的表格。

有没有办法从mysqldump命令中限制某些表(即以名称“test”开头)?

mysqldump -u username -p database \

--ignore-table=database.table1 \

--ignore-table=database.table2 等 > database.sql

但问题是,有大约20个以“test”开头的表。有没有办法跳过这些表(而不使用像“--ignore-table=database.table1 --ignore-table=database.table2 --ignore-table=database.table3 .... --ignore-table=database.table20”这样的长命令)?

并且有没有办法只导出模式而不导出数据?

0
0 Comments

问题的原因是mysqldump命令不支持使用正则表达式模式来跳过表格。解决方法是使用一个脚本来连接information_schema并列出所有的表格,然后根据正则表达式生成相应的--ignore-table参数。如果只需要导出表格的结构而不包含数据,则可以使用--no-data=true参数。如果需要导出所有非test表格的数据以及某一特定表格的结构,则需要使用两个独立的mysqldump命令,将第二个命令的结果追加到输出文件中。

最终生成的脚本如下所示:

mysqldump -u root -ptoor databaseName --ignore-table=testTable1 --ignore-table=testTable2 --ignore-table=testTable3  --ignore-table=schemaOnlyTable > mysqldump.sql
mysqldump -u root -ptoor databaseName schemaOnlyTable --no-data=true >> mysqldump.sql

如果需要所有表格的数据但只需要某一特定表格的结构,则需要使用两个mysqldump命令。一个用于忽略test表格,并且只导出所选择的表格的结构,另一个用于导出所选择表格的数据。

0