如何在不删除任何表的情况下进行mysqldump

17

通常情况下,当我备份数据库时,会运行像这样的命令:

mysqldump -uuser -p -hhost -Ddatabase > C:\TEMP\db_2018-04-05.sql
在该文件中,有一些DROP table语句。这通常是没问题的,但我已经在我的本地主机上修改了一个与生产数据库不同的模式。
如果我执行此文件,它将消除本地主机上数据库模式的重要更改。
我只需要INSERT语句。有没有任何标志可以通过mysqldump传递来实现这一点?
3个回答

25

包含mysqldump命令以忽略结构。

mysqldump --no-create-info ...


2
这个跳过了删除表和创建表的步骤。 - Jiechao Wang
还有一个简短的版本 -t - But those new buttons though..

22

当使用 mysqldump 时,您只需要添加 --skip-add-drop-table 选项即可。

$ mysqldump -uuser -p -hhost -Ddatabase --skip-add-drop-table > C:\TEMP\db_2018-04-05.sql 

现在的SQL文件中不再包含 DROP TABLE IF EXISTS。

请参阅MySQL 的 --skip-add-drop-table文档。


这仍然会执行“CREATE TABLE”语句,因此如果表已经存在(如OP所提到的),则会出现错误,例如“ERROR 1050(42S01)在第24行:表'my_table'已经存在”。 - But those new buttons though..

1

如果只需要转储表数据,如使用mysqldump仅转储数据而没有任何表信息?所述,请执行以下操作:

mysqldump --no-create-info ...

另外,您可以使用以下选项:

--skip-triggers:如果您正在使用触发器

--no-create-db:如果您正在使用--databases ...选项

--compact: 如果您想要摆脱额外的注释


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接