Win10使用mysqldump导出csv文件及期间遇到的问题

本文详细介绍了在使用MySQL时遇到的导出CSV文件权限受限问题及其解决方案。通过调整my.ini配置文件中的secure_file_priv参数,成功解决了无法在指定目录导出文件的问题。此外,还提供了直接在MySQL命令行下导出CSV文件的方法。

作为测试,我们这里使用了名为testdb的数据库中的名为test_table的表,首先我们使用如下SQL来查看其中有何数据:

select * from testdb.test_table

数据如下:
id |name |age |point |brief |
---|-----|----|------|-----------|
1 |刘德华 |23 |96.12 |我爱你亲爱的姑娘 |
2 |周杰伦 |22 |93.20 |七里香 |
3 | |0 |0.00 | |
4 |周润发 |0 |0.00 |"有没有人曾告诉你" |

然后在命令行执行如下指令尝试导出CSV文件:

mysqldump -uroot -p testdb test_table -t -T "D:/test/data/" --fields-enclosed-by="\" --fields-terminated-by=","

然后就看到报错了:

 SQL 错误 [1290] [HY000]: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

然后我们在MySQL命令行下执行:

show variables like '%secure%'

看到结果:

Variable_name            |Value                                          |
-------------------------|-----------------------------------------------|
require_secure_transport |OFF                                            |
secure_auth              |ON                                             |
secure_file_priv         |C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\ |

这里的secure_file_priv表示我们默认只能将导出的文件放到这个位置:C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\

我们这里尝试将C:\ProgramData\MySQL\MySQL Server 5.7目录下的my.ini文件进行如下修改:

secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.7/Uploads"

这一行前面加一个#改为:

# secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.7/Uploads"

然后在命令行执行services.msc进入服务管理界面,重启mySQL5.7对应的服务。
但是发现这样还是不行的。
继续尝试将这一行取消掉注释,并改成:

secure-file-priv=""

然后重启MySQL服务。

执行如下命令导出结果:

 mysqldump -uroot -p testdb test_table -t -T "D:/test/data/" --fields-enclosed-by="\" --fields-terminated-by=","

发现可以了,在D:/test/data/目录下生成了两个文件:

  • test_table.sql
  • test_table.txt

test_table.sql内容为空,因为-t选项设置成了表结果不导出;
test_table.txt内容如下:

\1\,\刘德华\,\23\,\96.12\,\我爱你亲爱的姑娘\
\2\,\周杰伦\,\22\,\93.20\,\七里香\
\3\,\\,\0\,\0.00\,\\
\4\,\周润发\,\0\,\0.00\,\"有没有人曾告诉你"\

这个时候发现好像哪里不对,哦,原来我双引号的地方没有填写好,暂时还不知道怎么办,所以尝试下面这种办法。

我们可以执行如下SQL在MySQL命令行下导出数据:

SELECT * INTO OUTFILE 'D:/test20181120.csv'
FIELDS TERMINATED BY ',' OPTIONALLY 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 
FROM testdb.test_table;

执行完SQL后,会在D盘根目录下生成一个名为test20181120.csv的文件,内容如下:

1,"刘德华",23,96.12,"我爱你亲爱的姑娘"
2,"周杰伦",22,93.20,"七里香"
3,"",0,0.00,""
4,"周润发",0,0.00,"\"有没有人曾告诉你\""

转载于:https://www.cnblogs.com/zifeiy/p/9987500.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值