如何将大sql转储文件拆分成小块并在原始文件中维护每个记录,尽管后来删除了其他记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将大sql转储文件拆分成小块并在原始文件中维护每个记录,尽管后来删除了其他记录相关的知识,希望对你有一定的参考价值。
这是我想要做的(mysql示例):
- 仅转储结构 - structure.sql
- 转储所有表数据 - data.sql
- 拆分data.sql并将每个表数据信息分开放置文件 - 表1.sql,table2,sql,table.sql ... table.sql
- 将每个表分成较小的文件(每个文件1k行)
- 提交我本地git存储库中的所有文件
- 应对所有目录到远程安全的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转储文件拆分成小块并保留原始文件中的每条记录,尽管后来的其他记录删除了?
答案
根本不要分开它们。或者按PK值的范围拆分它们。或者将它们拆分为每个文件1 db行(并在tablename之后命名文件+主键的内容)。
(除了更明显的XY答案,这是我本能的反应。)
另一答案
要在您的终端中执行500行的文件中拆分SQL转储:
$ split -l 5000 hit_2017-09-28_20-07-25.sql dbpart-
以上是关于如何将大sql转储文件拆分成小块并在原始文件中维护每个记录,尽管后来删除了其他记录的主要内容,如果未能解决你的问题,请参考以下文章