时间:2021-01-16 12:30:24 | 栏目:Mysql | 点击:次
win10导出csv有两种方式,第一种是借助工具,Navicat for Mysql是一个非常好用的mysql可视化工具,可以导出多种格式的数据,但是也有其局限。第二种是原始SQL语句导出。
Navicat For Mysql
安装软件,这里有绿色免费版,非常好用,链接:https://pan.baidu.com/s/1HZNzq_16M5yrq9hAMfNOmA 提取码:848h 。打开软件,建立数据库连接,然后选择对应的表,右键->导出向导,选择格式即可。
SQL导出
这里面有几个地方会出错,先列出来。
1,The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
2,SELECT list is not in GROUP BY clause
3,导出不好含表头
操作
1,在mysql的安装目录下,找到my.ini,如果没有,就创建这个文件。我的电脑安装的mysql5.7并没有这个文件,于是我就创建了这个文件,我安装在D盘mysql目录。
2,修改my.ini文件,如果存在这个文件就是修改,不存在则直接新增。在[mysqld]下面添加secure_file_priv=''
上面两个步骤是解决secure-file-priv的问题。执行到这个地方需要重启数据库服务,此电脑->右键->管理->服务和应用程序->服务->Mysql->右键->重新启动。
3,在Navicat For Mysql中,在对应的数据库下创建一个查询(这个不是必须的,只是方便写SQL查询)。由于Mysql5.7默认ONLY_FULL_GROUP_BY语义介绍。
执行
SELECT @@global.sql_mode
会出现结果
然后可以看到有ONLY_FULL_GROUP_BY,我们把结果复制出来,去掉ONLY_FULL_GROUP_BY这个字段。然后再运行SQL
SET sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" sql_mode的内容就是去掉ONLY_FULL_GROUP_BY剩下的内容。
4,导出数据
SELECT 'id','name','color' FROM product UNION SELECT `id`,`name`,`color` FROM product INTO OUTFILE 'product.csv' FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
第一行表示需要添加表头,是用的引号。第二行是查询对应的字段。第三行是导出的文件名。第四行是用什么符号分割。第五行是设置字段包围的符号。第六行是每一行的分割。
5,数据最终会被导出到mysql安装目录下的data->databaaseName目录下。
总结