如何使用mysqldump导出无DROP表语句的仅INSERT数据备份?
解决方法:用mysqldump只导出INSERT语句
当然有办法搞定这个问题!你可以通过组合几个mysqldump的参数,精准导出仅包含数据插入的语句,彻底避开会修改表结构的DROP、CREATE类语句。
直接给你调整后的命令:
mysqldump -uuser -p -hhost -Ddatabase --no-create-info --skip-add-drop-table > C:\TEMP\db_2018-04-05.sql
或者用更简洁的简写形式(-t是--no-create-info的缩写):
mysqldump -uuser -p -hhost -Ddatabase -t --skip-add-drop-table > C:\TEMP\db_2018-04-05.sql
给你拆解下这两个关键参数的作用:
-t/--no-create-info:强制mysqldump不生成任何表结构相关的SQL语句(比如CREATE TABLE、ALTER TABLE),只专注于数据导出--skip-add-drop-table:禁用默认会添加的DROP TABLE IF EXISTS语句,彻底避免执行备份文件时误删你本地已修改的表
如果你的场景里不需要锁表(比如生产库允许无锁导出),还可以加上--skip-lock-tables参数,让导出过程更轻量化:
mysqldump -uuser -p -hhost -Ddatabase -t --skip-add-drop-table --skip-lock-tables > C:\TEMP\db_2018-04-05.sql
这样生成的备份文件里就只有INSERT INTO语句了,执行的时候只会往你本地的表中插入数据,完全不会改动你已经修改好的schema,刚好匹配你的需求~
内容的提问来源于stack exchange,提问作者Kellen Stuart
相关产品推荐
相关产品推荐

