2014-04-30 31 views
2

我有一個包含html代碼和一些其他信息的mySQL表。這樣將mysql行導出到不同的文件中

一個例子:

SELECT id, lang, html 
FROM mytable t 
WHERE type = 10 

給出結果:

id  lang  html 
------------------------------------------------------- 
20  fr  '<html> ... html code here </html>' 
21  de  '<html> ... html code here </html>' 
22  it  '<html> ... html code here </html>' 
23  en  '<html> ... html code here </html>' 

和我的想法是將HTML代碼導出到每行一個文件中像

  • 20_fr.html會包含id爲20的html列
  • 21_de.html將包含HTML列編號21
  • 等...

是否可以導出所有行到一個文件中這樣做是SQL語言只喜歡this example

我知道我可以用Java或任何其他語言來完成它,但我只對SQL感興趣(存儲過程可以)。

回答

7

您可以將SELECT語句與INTO和OUTFILE子句一起使用。

參見:http://dev.mysql.com/doc/refman/5.7/en/select-into.html

SELECT html 
FROM mytable 
WHERE lang = 'fr' 
INTO OUTFILE 'frdata.txt' 

下面的SQL查詢可能被用來生成表中的每行一個文件輸出語句。請注意使用CONCAT函數爲每行創建一個新的SQL SELECT INTO OUTFILE命令。

SELECT CONCAT('SELECT html from mytable where lang=''', lang, '''', ' INTO OUTFILE ''', CAST(id AS CHAR), '_', lang, '.html'';') 

FROM mytable 

ORDER BY id; 

這將產生的語句:

SELECT html from mytable where lang='fr' INTO OUTFILE '20_fr.html'; 

SELECT html from mytable where lang='de' INTO OUTFILE '21_de.html'; 

SELECT html from mytable where lang='it' INTO OUTFILE '22_it.html'; 

... 
+1

的OP問怎麼每一行導出不同的文件,這將在同一個 – Serpiton

+0

出口一切WHERE子句將允許這個要求得到滿足。在上面的例子中,只有'fr'行被選中並插入到輸出文件中。 – Jeremy

+0

我已經修改了我的響應,以包含一條SQL語句以生成多個OUTFILE命令。 – Jeremy