mysqldump导出数据时,注意参数问题

本文讲述了使用mysqldump命令时,不同的参数设置可能导致导出内容的区别,特别是`--no-create-info`和`--skip-triggers`影响了新字段的保留,从而在导入数据时造成问题。

Mysql的mysqldump命令,要区别导出的内容:

mysqldump -h192.168.x.y  -P3307 -u 用户名 -p 数据库 表名 --where="id=3" > article_info_id_3.sql


mysqldump -h192.168.x.y  -P3307 -u 用户名 -p 数据库 表名 > article_info.sql

上面两个sql ,导出来的内容是包含 create table语句的。 

 mysqldump -h192.168.x.y -P3307 -u 用户名 -p 数据库 表名 --no-create-info --skip-triggers --complete-insert --where="id=3" > article_info_id_3.sql

 我就是因为没有注意参数,导致一个数据库新增字段后,再次导入数据,,一直发现新增字段丢失,耽误了两天!!!

<think> 我们正在处理一个关于mysqldump命令的问题,用户想要在导出数据去掉DROP TABLE命令。根据引用内容,用户已经知道如何使用--ignore-table选项排除特定表,但现在关注的是如何避免生成DROP TABLE语句。 在mysqldump中,默认情况下,为了确保导出的SQL文件在导入可以创建一个干净的环境,它会包含DROP TABLE语句(如果使用了--add-drop-database则还会包含DROP DATABASE)。用户希望去掉这些DROP TABLE语句。 解决方案: 1. 使用`--skip-add-drop-table`选项:这个选项可以避免在CREATE TABLE语句之前添加DROP TABLE语句。 2. 或者,使用`-d`或`--no-data`选项只能导出表结构而不导出数据,但这不是用户想要的,因为用户需要导出数据。 3. 另外,用户可能还希望保留其他结构,比如CREATE TABLE语句,而只是去掉DROP TABLE。 因此,正确的做法是使用`--skip-add-drop-table`选项。 示例命令: ```bash mysqldump --skip-add-drop-table -u username -p database_name > output.sql ``` 这样,导出的output.sql文件中将不会包含DROP TABLE语句。 另外,请注意,如果用户同希望导出数据并排除某些表,可以结合使用`--ignore-table`选项,比如: ```bash mysqldump --skip-add-drop-table --ignore-table=database_name.table1 -u username -p database_name > output.sql ``` 这样,既去掉了DROP TABLE语句,又排除了指定的表。 需要注意的是,如果用户之前使用了`--add-drop-database`,那么还需要避免DROP DATABASE,可以使用`--skip-add-drop-database`选项。 因此,针对用户的需求,我们推荐使用`--skip-add-drop-table`选项。 生成相关问题: 根据用户的当前问题,我们可以生成以下相关问题: §§相关问题§§ 1. 如何在使用mysqldump导出数据而不导出表结构? 2. 除了去掉DROP TABLE语句,还有哪些mysqldump的常用选项可以控制导出内容? 3. 如何在使用mysqldump导出避免锁表? </think> ### 使用 mysqldump 导出数据去掉 DROP TABLE 命令的方法 在 MySQL 中使用 `mysqldump` 导出数据,默认生成的 SQL 文件会包含 `DROP TABLE IF EXISTS` 语句(在表结构定义前)。要去除这些命令,可通过以下方法实现: #### 解决方案:使用 `--skip-add-drop-table` 选项 ```bash mysqldump --skip-add-drop-table -u [用户名] -p [数据库名] > 导出文件.sql ``` #### 完整示例: ```bash # 导出 mydb 数据库(不包含 DROP TABLE 命令) mysqldump --skip-add-drop-table -u root -p mydb > mydb_without_drop.sql ``` #### 补充说明: 1. **效果验证**: 导出的 SQL 文件将仅包含 `CREATE TABLE` 和 `INSERT` 语句,类似: ```sql CREATE TABLE `users` (...); INSERT INTO `users` (...) VALUES (...); ``` 不再出现 `DROP TABLE IF EXISTS users;` 命令。 2. **组合其他选项**: 可与其他常用参数组合使用: ```bash # 排除特定表 + 去掉 DROP TABLE mysqldump --skip-add-drop-table --ignore-table=mydb.ti_o_sms -u root -p mydb > backup.sql ``` 3. **替代方案**: 若需完全控制输出内容,可通过管道过滤: ```bash mysqldump -u root -p mydb | grep -v "DROP TABLE" > filtered_backup.sql ``` #### 注意事项: - `--skip-add-drop-table` 仅移除表删除命令,不影响数据导出完整性[^1] - 导入需确保目标数据库无同名表冲突(因缺少自动清理) - 与 `--add-drop-database` 冲突,二者不能同使用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值