导出除一个表之外的mysql模式(仅限数据)

时间:2014-09-21 04:30:25

标签: mysql database export

我有一个脚本可以导出MySQL数据库的模式,我可以根据这个模式生成迁移。对于这个过程,我只需要数据库模式,而不是数据本身。这就是我目前使用的:

mysqldump -u root --p[pass] -h localhost mydb_prod --add-drop-table --no-data > mydb_prod-`date +"%Y-%m-%d-%H:%M:%S"`.sql

--no-data选项可以解决问题。

但是,我的迁移历史记录也保存在数据库表中。这意味着我确实要导出migrations表的数据。我知道显式忽略特定表的--ignore-table选项,但是,这意味着我必须明确列出我将来可能导致问题的所有表,因为我们每隔一段时间只进行一次迁移

除了一个(或多个)显式指定的表外,有没有办法在没有表数据的情况下导出数据库的模式?

2 个答案:

答案 0 :(得分:1)

我讨厌回答我自己的问题,但我找到了一个解决方法,所以我不妨分享一下。

我基本上首先导出没有数据的所有表的模式,然后我只导出我的单个迁移表和数据,并将其附加到我的.sql输出文件中:

#/bin/bash

now=$(date +%Y-%m-%d-%H:%M:%S)
output_file="mydb_prod-$now.sql"

mysqldump -u root -p[pass] -h localhost mydb_prod --add-drop-table --no-data > "$output_file"
mysqldump -u root -p[pass] -h localhost mydb_prod migration_table --add-drop-table >> "$output_file"

这给了我我所需要的,而无需明确地手动指定每个表。

答案 1 :(得分:0)

您可以使用脚本编辑转储文件本身的任何表。我有时会使用sed来重命名表格等。