应用场景:知道某台DB服务器的IP和账户,登录上去查询了10W条记录,需要把这些记录拉到本地做分析
方法1,远程连接到DB服务器执行OUTFILE命令,文件存储在DB机器上,只有mysql账户的情况下,拿不到本地。文件位置【服务端】
mysql> select * from b into outfile '/tmp/1.sql';
Query OK, row affected (0.00 sec) #保存结果,无表格式,无字段名称信息
[root@168. ~]# cat /tmp/.sql
a
[root@168. ~]#
方法2,通过pager命令把输出结果重定向到本地文件。文件位置【本地】
mysql> pager cat >/tmp/.sql
PAGER set to 'cat >/tmp/1.sql'
mysql> select * from b;
row in set (0.00 sec) #文件结果,保存结果,保留表格式,不保存SQL命令,有字段名称信息
[root@168. tmp]$ cat .sql
+------+
| b |
+------+
| a |
+------+
[root@168. tmp]$
方法3,通过-e参数执行SQL命令,文件输出在本地,有字段名称信息,无表格式,无SQL命令。参数带-Ne,结果文件不带字段名称,和outfile导出结果相同。文件位置【本地】
[root@168. tmp]# /usr/local/bin/mysql -uroot -p -h192.168.1.100 test -e "select * from b" > /tmp/.sql
Enter password:
[root@168. tmp]# cat .sql
b
a
[root@168. tmp]#
方法4,通过tee,把MYSQL的结果保存到外部文件中,保存命令和结果,保留表格式。文件位置【本地】
mysql> tee /tmp/.sql
Logging to file '/tmp/3.sql'
mysql> select * from b;
+------+
| b |
+------+
| a |
+------+
row in set (0.00 sec) mysql> exit
Bye
[root@168. tmp]# cat .sql
mysql> select * from b;
+------+
| b |
+------+
| a |
+------+
row in set (0.00 sec) mysql> exit
[root@168. tmp]#
通过-e参数执行SQL命令带-N参数,可以达到outfile一样的目的,并把文件保存在本地。