欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

mysql查询结果输出到文件 导出到文件 有大用 有大大用 有大大大用

mysql查询结果输出到文件

mysql查询结果导出/输出/写入到文件

方法一:
直接执行命令:
mysql> select count(1) from table  into outfile '/tmp/test.xls';

Query OK, 31 rows affected (0.00 sec)
在目录/tmp/下会产生文件test.xls
遇到的问题:
mysql> select count(1) from table   into outfile '/data/test.xls';
报错:
ERROR 1 (HY000): Can't create/write to file '/data/test.xls' (Errcode: 13)
可能原因:mysql没有向/data/下写的权限

方法二:
查询都自动写入文件:
mysql> pager cat > /tmp/test.txt ;
PAGER set to 'cat > /tmp/test.txt'
之后的所有查询结果都自动写入/tmp/test.txt',并前后覆盖
mysql> select * from table ;
30 rows in set (0.59 sec)
在框口不再显示查询结果


方法三:
跳出mysql命令行

[root@SHNHDX63-146 ~]# mysql -h 127.0.0.1 -u root -p XXXX -P 3306 -e "select * from table"  > /tmp/test/txt



来自  https://www.cnblogs.com/emanlee/p/4233602.html

来自  https://www.cnblogs.com/edgedance/p/7090800.html

 

 

如果是对MySQL整个表数据导出,可以参照文章:http://www.crazyant.net/1355.html

然而也会遇到的场景是,需要执行一个SQL语句,然后将SQL语句的结果输出到文件;

方法一:使用MySQL的select * into outfile ‘/tmp/rs.txt’ from tb_name句型

这是个不可行的方法;

举个例子,执行以下的SQL语句:

这个SQL总会报出下面的错误:

原因是这个语句并不是在MySQL客户端,而是在MySQL的服务器上执行的,通常用于服务器管理员在服务器机器上进行数据备份使用,由于MySQL客户端账号并没有访问服务器机器本身的权限,所以这个SQL执行不会成功。

方法2:直接将SQL执行的结果重定向到文件即可

执行下面的命令,能够将SQL语句执行的结果输出到文件:

其中-Ne是执行这个SQL语句的选项,-N代表输出SQL语句执行结果中不带第一行的字段名称,-e表示要执行SQL语句;

执行下面的命令,则可以执行SQL文件,并把结果输出到文件:

新建一个文件,名称为runsql.sql,内容为:

然后这样执行命令:

其中-N命令仍然表示不输出表头字段说明(第一行),小于号表示输入重定向,runsql.sql的文件内容会被发送给mysql的命令,大于号则表示输出重定向,会将命令执行的结果输出到文件;


导出csv文件,逗号分隔符:

  
1
mysql-h10.10.10.10-ucrazyant-p123456-P3306-N<runsql.sql | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > /tmp/rs.txt

总结:

  • select into outfile只能在MySQL服务器上执行,客户端上无法执行;

  • mysql -Ne “sql” > rs.txt可以将SQL语句执行后输出为文件

  • mysql -N < runsql.sql > rs.txt可以执行sql文件中的内容,然后将结果输出到文件;

  • mysql -N的选项,表示输出时不带表头

分类: 数据库

来自  https://www.cnblogs.com/yinwutuan/p/10208955.html


mysql在终端执行sql并把结果写入文件的方法

在终端使用mysql执行语句时,我们一般先进入mysql,然后再在里面执行sql语句。

例如:

mysql -uroot
mysql> use mydb;
mysql> select * from user;
...
  • 1

  • 2

  • 3

  • 4

如果我们需要进行某些表的监控,并保存执行后的查询结果,需要手动复制到文件,这样影响工作效率。

终端执行sql

因此提供以下方法,可以不用进入mysql,而是直接在终端使用shell调用mysql执行sql语句。

mysql 提供了 -e 参数用于直接在终端执行语句,并输出。

例如:

mysql -uroot -e 'select * from mydb.user'
  • 1

 
使用mysql -e执行语句时,可以加入-v, -vv, -vvv参数

-v 显示语句本身
-vv 增加显示查询结果行数
-vvv 增加显示执行时间


执行结果写入文件

使用输出重定向,则可以把执行的结果保存到文件中。

例如:

mysql -uroot -e 'select * from mydb.user' > /tmp/mydb_user.txt
  • 1

终端执行后,查询结果会保存到/tmp/mydb_user.txt中。

来自   https://blog.csdn.net/fdipzone/article/details/78660204

普通分类: