这是我想要做的事情(MySQL 示例):
- 仅转储结构 - Structure.sql
- 转储所有表数据 - data.sql
- 拆分data.sql并将每个表数据信息放入单独的文件 - table1.sql、table2、sql、table3.sql ... tablen.sql
- 将每个表拆分为更小的文件(每个文件 1k 行)
- 提交本地 git 存储库中的所有文件
- 将所有目录复制到远程安全服务器
我在执行第 4 步时遇到问题。
例如,我将 table1.sql 分成 3 个文件:table1_a.sql 和 table1_b.sql 和 table1_c.sql。 如果在新转储上有新记录,那很好 - 它只是添加到 table1_b.sql 中。
但是,如果 table1_a.sql 中存在已删除的记录,则所有后续记录都将移动,并且 git 会将文件 table1_b.sql 和 table1_c.sql 视为已更改,但这是不行的。
基本上它破坏了在 SCM 中保留 sql 备份的整个想法。
我的问题:如何将大的 sql 转储文件分割成小块,并在原始文件中维护每条记录,尽管后来删除了其他记录?
最佳答案
根本不要拆分它们。或者按 PK 值的范围将它们分开。或者将它们直接拆分为每个文件 1 db 行(并以表名 + 主键内容命名文件)。
(除了更明显的 XY 答案,这是我的本能 react 。)
关于sql - 如何将大sql转储文件分割成小块并维护原始文件中的每条记录,尽管后来删除了其他记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38567600/