應用場景:知道某台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一樣的目的,並把文件保存在本地。