mysql带where条件导出数据表以及部分错误解析

一、前言

      最近导出数据表的时候,屡屡受挫,让博主一度以为自己记错了,死活导不出来,后来才看到报错:

mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1/*!40102 ,
SQL_MODE=concat(@@sql_mode, _utf8 ',NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS') */': Unknown system variable 'OPTION' (1193)

      行叭,下面咱们来说一下这个问题,以及导出数据表的正确姿势

二、正确导出数据表

1、报错解答

      上面的报错是因为mysqldump的版本问题,导致跟mysql的版本不匹配,下面贴出一个google来的答案。

如果您最近将MySQL版本升级到5.6,则mysqldump命令可能会引发以下错误:

mysqldump:无法执行'SET OPTION SQL_QUOTE_SHOW_CREATE = 1':您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册以获取正确的语法,以在第1行的'OPTION SQL_QUOTE_SHOW_CREATE = 1'附近使用(1064)
原因是MySQL 5.6删除了对“ SET OPTION”的支持,并且您的mysql客户端工具可能在较旧的版本上。最有可能是5.5或5.1。在MySQL bug网站上有关于此问题的更多信息。

最快的解决方案是将您的mysql客户端工具更新为5.6,您的问题将得到解决。不幸的是,目前有用于Ubuntu的MySQL 5.6工具的官方二进制文件。但是,我确实在很好的旧GitHub上找到了一个解决方案,您可以在其中将此自定义MySQL 5.6客户端工具添加到ubuntu存储库中。它像一种魅力。要在ubuntu上安装mysql客户端工具5.6,请运行以下命令:

      所以如果大家也是有相同的错误,那么升级下mysqldump即可,具体的升级步骤可以自行百度

2、正常的导出命令

mysqldump -h  [hostname] -u [用户名] -p [数据库名]  [数据表名]>/home/lijinfeng/test.sql;
注 : > xxx/test.sql 是你自己要保存sql文件的路径

      咱们这里只是列一下导出的命令,具体的一些参数和含义,大家可以参考:
mysqldump命令使用详解

3、导出遇到小错误怎么办

报错信息:

mysqldump: Got error: 1044: Access denied for user 'manage'@'10.17.%' to database 'manage' when doing LOCK TABLES

      遇到错误不要慌,这个错误看起来就是用户权限不够的原因,所以解决方案自然是加大用户权限或者导出的时候不锁表就好了,解决方案如下:

加上 --skip-lock-tables,声明不锁表即可
注:mysqldump 参数--lock-tables 参数是锁定当前导出库的所有表,实际生产环境慎用或者要声明不锁表
			参考:https://www.cnblogs.com/kerrycode/p/6963880.html

另外:使用 --quick 和 --single-transaction 还可以加快导出速度。

4、根据where条件导出表

      咱们平常开发的时候,经常会遇到类似的需求,表巨大,直接导出来成本太高了,那就只能加where条件来进行导出了,具体案例如下:

mysqldump -h  [hostname] -u [username] -p   --skip-lock-tables [数据库名]  [表名] --where="log_time >= '2020-07-15 00:00:00' and log_time < '2020-08-12 00:00:00'"  --triggers=false --replace>/home/lijinfeng/test.sql;

注:--where : 直接写where条件即可,单双引号都可以,有人说linux只能用单引号,但双引号也是可以的
-t:只导数据

      此处给出的案例都是博主这边一直在用的,可以放心食用,只要环境没问题,那导出来是妥妥的

end

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值