mysql 根据sql查询语句导出数据

在这里提供2中方式:

建议:可以使用方式二,就不使用方式一。

方式一:

在linux下支持,window下不支持。

进入到mysql的bin目录,或者已经给mysql配置了环境变量就不用进入bin目录。

原理:

通过mysql工具的-e参数,可以执行select、update、delete、insert语句。

通过mysql  -u用户名 –p密码  数据库 –esql语句  > 文件路径/文件名

利用linux的>写入操作,将mysql通过-e参数执行的语句结果输出到文件中去。

通过mysql 导出方式:

./mysql  -uliuxioali  -p1452liu   www  -e " SELECT

            a.phone

        FROM

            user_info a

        LIMIT 10" > phone.txt

讲解:

./mysql  -uliuxioali  -p1452liu   www  -e " SELECT

            a.phone

        FROM

            user_info a

        LIMIT 10"

执行查询,正常情况会将结果输出到控制台。

> phone.txt

获取上一句的结果输出到phone.txt文件中

 

方式二:

需要设置mysql只读参数:

默认值为:

secure_file_priv=NULL

必须在my.ini(window默认路径:C:\Windows)或my.cnf(linux默认路径/etc/my.cnf) 中设置

secure_file_priv=’’或secure_file_priv=’/tmp’

secure_file_priv=’’ 可以任意指定文件输出路径

secure_file_priv=’/tmp’ 生成文件都输出到了/tmp文件路径下

并且重启mysql服务,如果是在生产环境必须晚上配置重启服务。

 

在mysql内部执行。

原理:

就是mysql提供的导出数据的一种语法。

语法:

SELECT ... FROM TABLE_A INTO OUTFILE  "/path/to/file.csv"  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';

语法解析:FIELDS TERMINATED BY ','  指定字段之间的分割符

OPTIONALLY ENCLOSED BY '"'  指定每个字段值得前后符号 结果为 "12"

LINES TERMINATED BY '\n' 指定换行符,因为window和linux换行符不一样。Window是\r\n linux是\n

 

例句:

SELECT phone FROM  user_info  WHERE phone is NOT NULL LIMIT 10 INTO OUTFILE 'F:\\txt.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' ;

 

输出结果如下:

"13519000118"

"13519000122"

"13519000151"

"13519000187"

"13519000216"

"13519000248"

"13519000303"

"13519000364"

"13519000401"

"13519000492"

posted on 2019-05-30 17:37  拿着菜刀  阅读(1847)  评论(0编辑  收藏  举报

导航