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

10 浏览
0 Comments

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

我通常在备份数据库时运行这样的命令:mysqldump -uuser -p -hhost -Ddatabase > C:\TEMP\db_2018-04-05.sql。在这个文件中,有一些DROP table语句。通常这没问题,但是我已经修改了本地主机的模式,使其与生产数据库不同。如果我执行这个文件,就会抹去本地主机数据库模式的重要更改。我只需要INSERT语句。有没有什么标志可以传给mysqldump来实现这个?

0
0 Comments

问题的出现原因是在使用mysqldump命令备份数据库时,会默认在生成的SQL文件中包含DROP TABLE语句,导致在还原数据库时会先删除原有的表,再重新创建表。然而,如果数据库中已经存在同名的表,执行DROP TABLE语句会导致数据丢失。因此,需要找到一种方法来避免生成DROP TABLE语句。

解决方法是在使用mysqldump命令时添加--skip-add-drop-table选项。这样,生成的SQL文件中将不再包含DROP TABLE语句。下面是一个示例命令:

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

在使用该命令生成的SQL文件中,将不会出现DROP TABLE IF EXISTS语句。

但是需要注意的是,即使不包含DROP TABLE语句,SQL文件中仍然会包含CREATE TABLE语句。如果数据库中已经存在同名的表,执行CREATE TABLE语句时会报错,如ERROR 1050 (42S01) at line 24: Table 'my_table' already exists。因此,在还原数据库时需要注意处理这些错误。

0
0 Comments

在使用mysqldump命令时,有时候我们不想删除任何表,只需要导出表中的数据。下面是解决这个问题的方法:

方法一:

使用--no-create-info选项,可以让mysqldump命令忽略表的结构。示例命令如下:

mysqldump --no-create-info ...

使用这个选项后,mysqldump命令将不会删除表或创建新的表。

方法二:

还可以使用-t选项,它是--no-create-info选项的简写形式。

通过以上两种方法,我们可以在使用mysqldump命令时跳过删除表和创建表的步骤,只导出表中的数据。

0
0 Comments

问题出现的原因是,用户想要使用mysqldump命令只导出表中的数据,而不包括任何表信息。解决方法是在mysqldump命令中添加一些选项。具体方法如下:

如果只想导出表中的数据,可以使用--no-create-info选项,命令如下:

mysqldump --no-create-info ...

如果使用了触发器,可以使用--skip-triggers选项,命令如下:

mysqldump --skip-triggers ...

如果使用了--databases ...选项,可以使用--no-create-db选项,命令如下:

mysqldump --no-create-db ...

如果想要去除额外的注释,可以使用--compact选项,命令如下:

mysqldump --compact ...

通过添加上述选项,即可实现只导出表中数据而不包括任何表信息的需求。

0