我使用mysqldump将2个相同的数据库(表的名称和结构相同)导出为两个.sql文件。我想将它们合并到一个文件中。但是,两个数据库在每个表之前都有一个“Drop table”行。这意味着如果我导入db1然后导入db2,则在导入db2表之前删除db1表。
文件很大,我无法在编辑器中打开它们。此外,每个数据库中有50个表。
如何在mysql导入期间忽略Drop table命令?
答案 0 :(得分:24)
使用--skip-add-drop-table
时,您只需添加mysqldump
选项即可。
$ mysqldump --databases --skip-add-drop-table -u root db1 > /tmp/qqq.2
因此,DROP TABLE IF EXISTS
个文件中不会sql
。
答案 1 :(得分:14)
如果您不想再次进行转储并且使用的是Linux,则可以使用:
awk '!/^DROP TABLE IF EXISTS/{print}' <dump.file> | mysql <db_name>
如果要再次转储数据,则应将--skip-add-drop-table
传递给mysqldump实用程序。
答案 2 :(得分:1)
我想我不明白为什么DROP TABLE语句应该有问题,或者为什么需要为两个IDENTICAL数据库合并转储。
话虽如此,您可能不应该在初始转储中添加DROP TABLE。这将通过mysqldump命令中的标记使用来控制,如http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html
中的文档中所述。这可能意味着如果您使用默认选项,则需要使用--skip-opt
标志(默认为运行,就像传递--opt
标志一样)。然后,您需要在--opt
中指定您仍想使用的所有标记。