1

这是我想要做的(MySQL 示例):

  1. 仅转储结构 - structure.sql
  2. 转储所有表数据 - data.sql
  3. 拆分 data.sql 并将每个表的数据信息放在单独的文件中 - table1.sql、table2、sql、table3.sql ... tablen.sql
  4. 将每个表拆分为较小的文件(每个文件 1k 行)
  5. 提交本地 git 存储库中的所有文件
  6. 将所有目录处理到远程安全服务器

#4 步骤有问题。

例如,我将 table1.sql 拆分为 3 个文件:table1_a.sqltable1_b.sqltable1_c.sql。如果在新转储中有新记录很好 - 它只是添加到 table1_b.sql。

但是,如果 table1_a.sql 中有已删除的记录,则所有下一条记录都会移动,git 会将文件 table1_b.sql 和 table1_c.sql 视为已更改,并且不正常。

基本上它破坏了在 SCM 中保留 sql 备份的整个想法。

我的问题:尽管后来删除了其他记录,如何将大 sql 转储文件拆分为小块并维护原始文件中的每条记录?

4

2 回答 2

1

要在 500 行的文件中拆分 SQL 转储,请在终端中执行:

$ split -l 5000 hit_2017-09-28_20-07-25.sql dbpart-
于 2018-03-02T11:28:32.773 回答
0

根本不要拆分它们。或按 PK 值范围拆分它们。或者将它们拆分为每个文件 1 db 行(并以表名 + 主键的内容命名文件)。

(除了更明显的 XY 答案,这是我的本能反应。)

于 2016-07-25T12:30:14.737 回答