2013-07-10 41 views
7

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

回答

15

有没有特殊的工具来做到这一点。你可以简单地串联文件:

$ 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 
相关问题