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

 

若是是對MySQL整個表數據導出,能夠參照文章:http://www.crazyant.net/1355.htmlhtml

然而也會遇到的場景是,須要執行一個SQL語句,而後將SQL語句的結果輸出到文件;mysql

方法一:使用MySQL的select * into outfile ‘/tmp/rs.txt’ from tb_name句型

這是個不可行的方法;git

舉個例子,執行如下的SQL語句:github

這個SQL總會報出下面的錯誤:sql

緣由是這個語句並非在MySQL客戶端,而是在MySQL的服務器上執行的,一般用於服務器管理員在服務器機器上進行數據備份使用,因爲MySQL客戶端帳號並無訪問服務器機器自己的權限,因此這個SQL執行不會成功。服務器

方法2:直接將SQL執行的結果重定向到文件便可

執行下面的命令,可以將SQL語句執行的結果輸出到文件:post

其中-Ne是執行這個SQL語句的選項,-N表明輸出SQL語句執行結果中不帶第一行的字段名稱,-e表示要執行SQL語句;spa

執行下面的命令,則能夠執行SQL文件,並把結果輸出到文件:.net

新建一個文件,名稱爲runsql.sql,內容爲:code

而後這樣執行命令:

其中-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的選項,表示輸出時不帶表頭
相關文章
相關標籤/搜索