MySQL导入 - 如果存在行,如何忽略Drop表?

zen*_*der 10 mysql database

我使用mysqldump将2个相同的数据库(表的名称和结构相同)导出为两个.sql文件.我想将它们合并到一个文件中.但是,两个数据库在每个表之前都有一个"Drop table"行.这意味着如果我导入db1然后导入db2,则在导入db2表之前会删除db1表.

文件很大,我无法在编辑器中打开它们.此外,每个数据库中有50个表.

如何在mysql导入期间忽略Drop table命令?

Goi*_*Way 29

您只需--skip-add-drop-table在使用时添加选项即可mysqldump.

$ mysqldump --databases --skip-add-drop-table -u root db1 > /tmp/qqq.2
Run Code Online (Sandbox Code Playgroud)

所以,就没有DROP TABLE IF EXISTSsql文件中.

请参阅--skip-add-drop-table上的mysql文档

  • 并且 `--no-create-info` 避免了表创建。 (6认同)

rav*_*nur 14

如果您不想再次进行转储并且使用Linux,则可以使用:

awk '!/^DROP TABLE IF EXISTS/{print}' <dump.file> | mysql <db_name>
Run Code Online (Sandbox Code Playgroud)

如果要再次转储数据,则应传递--skip-add-drop-table给mysqldump实用程序.

  • 如果您可以根据需要传递 mysqldump 参数,则无需编辑文件。请参阅@GoingMyWay 答案。 (2认同)