根据不同表中的列将表导出到csv到多个文件

时间:2013-04-06 20:29:56

标签: mysql mysqldump

我需要根据另一个表中的列值将表转储到多个文件中。

我也想使用mysql的命令行,而不是通过任何脚本语言。可能吗?

例如:

表A有

(ID, Name, Stuff)Name唯一

表B

(ID, Name, Start, End)

我想转储Name中存在A的B中的所有行,每个行都基于Name转储到自己的文件中。

在SQL中,大致如下:

SELECT *
FROM B
WHERE Name = 'brad' (exists in A)
INTO OUTFILE '/home/csv/brad.csv' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n'

除了A中存在的每个名称。

1 个答案:

答案 0 :(得分:0)

要确保表Name中存在A,请在名称上加入AB

SELECT *
FROM B
INNER JOIN A ON B.Name = A.Name
WHERE Name = 'brad'

至于改变OUTFILE名称,我认为如果没有编程/脚本,就没有办法做到这一点。您可以使用EXECUTE的MySQL过程来完成此操作;你可以适应一个简单的例子here。一般方法是创建不同名称的游标,然后扫描它并为每个名称构建/执行SQL(包括OUTFILE值)。