我有一个脚本来导出 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
选项可以显式忽略特定表,但是,这意味着我必须显式列出所有表,这可能会在将来导致问题,因为我们只每隔一段时间进行一次迁移。
除了一个(或多个)明确指定的表之外,是否有一种方法可以导出没有表数据的数据库架构?
最佳答案
我讨厌回答自己的问题,但我找到了一个解决方法,所以我不妨分享它。
我基本上首先导出没有数据的所有表的架构,然后只导出包含数据的单个迁移表,并将其附加到我的 .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"
这正是我所需要的,而无需手动显式指定每个表。
关于mysql - 导出 mysql 模式(仅数据),除了一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25955812/