如何将大sql转储文件拆分成小块并在原始文件中维护每个记录,尽管后来删除了其他记录

问题描述 投票:0回答:2

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

  1. 仅转储结构 - structure.sql
  2. 转储所有表数据 - data.sql
  3. 拆分data.sql并将每个表数据信息分开放置文件 - 表1.sql,table2,sql,table.sql ... table.sql
  4. 将每个表分成较小的文件(每个文件1k行)
  5. 提交我本地git存储库中的所有文件
  6. 应对所有目录到远程安全的serwerwer

我有#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转储文件拆分成小块并保留原始文件中的每条记录,尽管后来的其他记录删除了?

sql database split mysqldump csplit
2个回答
0
投票

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

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


0
投票

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

$ split -l 5000 hit_2017-09-28_20-07-25.sql dbpart-
© www.soinside.com 2019 - 2024. All rights reserved.