假设我有数据库A和表b。给定多个.sql文件b1,b2,...,bn,每个文件对应一个b的互斥表转储,我将如何将所有文件b1,b2,...,bn合并到一个.sql表文件中?或者我如何将单个文件的导入合并到一个表中?
答案 0 :(得分:17)
没有特殊工具可以做到这一点。您可以简单地连接文件:
$ 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