假设我有数据库 A 和表 b。给定多个 .sql 文件 b1、b2、...、bn,每个文件都对应于 b 的互斥表转储,我将如何将所有文件 b1、b2、...、bn 合并到一个 .sql 表文件中?或者我如何将单个文件的导入合并到一个表中?
最佳答案
没有专门的工具可以做到这一点。您可以简单地连接文件:
$ cat b1.sql b2.sql b3.sql > b_all.sql
除了这些 .sql 文件的典型内容是一个 DROP TABLE,然后是一个 CREATE TABLE,然后是很多 INSERT 语句。如果每个单独的转储文件都是这样格式化的,那么如果您按顺序恢复它们,每个转储文件都会删除 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
关于mysql - 将多个 .sql 表转储文件合并到一个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17582660/