MySQL執行Select語句將結果導出到文件的方法


 

如果是對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的選項,表示輸出時不帶表頭


免責聲明!

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



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