我使用mysqldump将两个相同的数据库(表名和表结构相同)导出到两个.sql文件中。我想将它们合并成一个文件。但是,两个数据库在每个表之前都有一个“Drop table”行。这意味着如果我导入db1,然后导入db2,那么在导入db2表之前,db1表会被删除。MySQL导入 - 如何忽略删除表如果存在行?
文件很大,我无法在编辑器中打开它们。另外,每个数据库中有50个表格。
如何在mysql导入过程中忽略Drop table命令?
我使用mysqldump将两个相同的数据库(表名和表结构相同)导出到两个.sql文件中。我想将它们合并成一个文件。但是,两个数据库在每个表之前都有一个“Drop table”行。这意味着如果我导入db1,然后导入db2,那么在导入db2表之前,db1表会被删除。MySQL导入 - 如何忽略删除表如果存在行?
文件很大,我无法在编辑器中打开它们。另外,每个数据库中有50个表格。
如何在mysql导入过程中忽略Drop table命令?
如果你不想让转储再次和你使用Linux,你可以去:
awk '!/^DROP TABLE IF EXISTS/{print}' <dump.file> | mysql <db_name>
如果你想再次转储数据,您应该通过--skip-add-drop-table
到mysqldump的效用。
我想我不明白为什么DROP TABLE语句应该有问题,或者为什么您需要合并两个IDENTICAL数据库的转储。
也就是说,你应该在初始转储中不添加DROP TABLE。这将通过标志使用您的mysqldump命令被控制在http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html
这在机制的文档指出可能意味着你需要的,如果你正在使用默认选项(默认是仿佛--opt
标志传递运行)使用--skip-opt
标志。然后您需要指定您仍然想使用的--opt
内的所有标志。
这些转储无法重新创建。从结构上讲,它们是相同的。 – zenCoder
当您使用mysqldump
时,您只需要添加--skip-add-drop-table
选项。
$ mysqldump --databases --skip-add-drop-table -u root db1 > /tmp/qqq.2
所以,他们也不会在sql
DROP TABLE IF EXISTS
文件。
编辑文件和评论这些sommands - > http://dev.mysql.com/doc/refman/5.1/en/comments.html – krokodilko
的文件是巨大的。将无法在编辑器中打开它们。另外,每个数据库中有50个表格。 – zenCoder