根据模式跳过 mysqldump 中的表格。
根据模式跳过 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
”这样的长命令)?
并且有没有办法只导出模式而不导出数据?
问题的原因是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表格,并且只导出所选择的表格的结构,另一个用于导出所选择表格的数据。