mysql导出.csv文件

首先要进入mysql命令行,输入 SHOW VARIABLES LIKE '%secure%';获取secure_file_priv的值,该值是csv文件的存放路径。

具体操作过程如下图所示

然后将数据库中的表按如下指令导出.csv文件

select * from t_user
into outfile 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/user.csv'
fields terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by '\r\n';

这里的user.csv文件有20多万条记录,字段有如下图所示

导出非常快!

secure_file_priv 的值可以在 my.ini文件中找到和修改。

在MySQL5.6中my.ini位于安装路径下,而MySQL5.7中my.ini位于ProgramData文件夹下的MySQL中.

参数说明:

FIELDS TERMINATED BY ',':指定字段分隔符为,(逗号),默认是空格
OPTIONALLY ENCLOSED BY '"':认为双引号中的是一个独立的字段。Excel 转 CSV 时,有特殊字符(逗号、顿号等)的字段,会自动用双引号引起来,注意这里看到是两个双引号,实际上是一对 '(单引号)里面一个"(双引号),默认是不使用符号进行区别
LINES TERMINATED BY '\n':指定行分隔符为\n(换行),注意,在 Windows 平台上创建的文件,分隔符是 '\r\n'。默认是一条记录+一个换行符,即每条记录占一行。这里设置与否都一样。

上面的语句归纳为:

select 字段1[,字段2...,字段n] from table_name condition
into outfile 'secure_file_priv所指向的路径+filename.csv'
fields terminated by ','--可以不设置
optionally enclosed by '"' --可以不设置
escaped by '"' --可以不设置
lines terminated by '\r\n'; --可以不设置

比如有t_book表如下所示

执行查询语句

SELECT * FROM t_book
WHERE publishDate BETWEEN '2012-01-01' AND '2018-10-01'
AND price BETWEEN 1000 AND 10000
AND bookName LIKE CONCAT('%','名','%')
AND kind='言情'
LIMIT 0,198
into outfile 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/t_book.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'

结果如图所示

以上内容涉及数据库表t_book,可以下载我的t_book资源进行实验

关于乱码的解决

乱码时可以通过 character set 编码格式进行设置,比如

SELECT * from t_book
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.6/Uploads/t_book.csv'
CHARACTER SET gbk
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';

猜你喜欢

转载自blog.csdn.net/m0_37561039/article/details/83550773