将mysql行导出到不同的文件中

рüф*_*ффп 4 mysql sql export file

我有一个mySQL表,其中包含HTML代码和一些其他信息.

这样的一个例子:

SELECT id, lang, html 
FROM mytable t
WHERE type = 10
Run Code Online (Sandbox Code Playgroud)

给出结果:

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>'
Run Code Online (Sandbox Code Playgroud)

我的想法是每行输出html代码到一个文件中

  • 20_fr.html 将包含id 20的html列
  • 21_de.html 将包含id 21的html列
  • 等等...

是否可以在SQL语言中这样做,就像这个例子一样,将所有行导出到一个文件中.

我知道我可以用Java或任何其他语言来做,但我只对SQL感兴趣(存储过程可以没问题).

Jer*_*emy 10

您可以将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'
Run Code Online (Sandbox Code Playgroud)

可以使用以下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;
Run Code Online (Sandbox Code Playgroud)

这将产生声明:

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';

...  
Run Code Online (Sandbox Code Playgroud)