Mysql 客户端查询结果如何保存到本地而不是服务端?

应用场景:知道某台DB服务器的IP和账户,登录上去查询了10W条记录,需要把这些记录拉到本地做分析


 

方法1,远程连接到DB服务器执行OUTFILE命令,文件存储在DB机器上,只有mysql账户的情况下,拿不到本地。文件位置【服务端】

mysql> select * from b into outfile '/tmp/1.sql';
Query OK, 1 row affected (0.00 sec)

#保存结果,无表格式,无字段名称信息
[root@168.21 ~]# cat /tmp/1.sql 
a
[root@168.21 ~]# 

方法2,通过pager命令把输出结果重定向到本地文件。文件位置【本地】

mysql> pager cat >/tmp/1.sql
PAGER set to 'cat >/tmp/1.sql'
mysql> select * from b;
1 row in set (0.00 sec)

#文件结果,保存结果,保留表格式,不保存SQL命令,有字段名称信息
[root@168.23 tmp]$ cat 1.sql 
+------+
| b    |
+------+
| a    |
+------+
[root@168.23 tmp]$ 

方法3,通过-e参数执行SQL命令,文件输出在本地,有字段名称信息,无表格式,无SQL命令。参数带-Ne,结果文件不带字段名称,和outfile导出结果相同。文件位置【本地】

[root@168.23 tmp]# /usr/local/bin/mysql -uroot -p -h192.168.1.100 test -e "select * from b" > /tmp/2.sql
Enter password: 
[root@168.23 tmp]# cat 2.sql 
b
a
[root@168.23 tmp]# 

方法4,通过tee,把MYSQL的结果保存到外部文件中,保存命令和结果,保留表格式。文件位置【本地】

mysql> tee /tmp/3.sql
Logging to file '/tmp/3.sql'
mysql> select * from b;
+------+
| b    |
+------+
| a    |
+------+
1 row in set (0.00 sec)

mysql> exit
Bye
[root@168.23 tmp]# cat 3.sql 
mysql> select * from b;
+------+
| b    |
+------+
| a    |
+------+
1 row in set (0.00 sec)

mysql> exit
[root@168.23 tmp]# 

通过-e参数执行SQL命令带-N参数,可以达到outfile一样的目的,并把文件保存在本地

转载于:https://www.cnblogs.com/zuoxingyu/p/6226160.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值