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一樣的目的,並把文件保存在本地


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM