10

假设我有数据库 A 和表 b。给定多个 .sql 文件 b1,b2,...,bn 每个对应于 b 的互斥表转储我将如何将所有文件 b1,b2,...,bn 组合成一个 .sql 表文件? 或者我如何将单个文件的导入合并到一个表中?

4

1 回答 1

20

没有特殊的工具可以做到这一点。您可以简单地连接文件:

$ cat b1.sql b2.sql b3.sql > b_all.sql

除了这些 .sql 文件的典型内容是一个 DROP TABLE,然后是一个 CREATE TABLE,然后是很多 INSERT 语句。如果每个单独的转储文件都是这样格式化的,那么如果您按顺序恢复它们,每个转储文件都会 DROP TABLE 并擦除前一个文件导入的数据。

您可以在不使用 DROP/CREATE 语句的情况下创建转储文件:

$ mysqldump --no-create-info <database> <table> ...

但是如果你已经有了转储文件(不能重新转储它们),并且你想摆脱除第一个文件之外的所有 DROP/CREATE 语句:

$ ( cat b1.sql ; cat b2.sql b3.sql | sed -e '/^DROP TABLE/,/^-- Dumping data/d' ) > b_all.sql
于 2013-07-10T23:44:53.760 回答