我需要根据另一个表中的列值将表转储到多个文件中。
我也想使用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中存在的每个名称。
答案 0 :(得分:0)
要确保表Name
中存在A
,请在名称上加入A
和B
:
SELECT *
FROM B
INNER JOIN A ON B.Name = A.Name
WHERE Name = 'brad'
至于改变OUTFILE
名称,我认为如果没有编程/脚本,就没有办法做到这一点。您可以使用EXECUTE
的MySQL过程来完成此操作;你可以适应一个简单的例子here。一般方法是创建不同名称的游标,然后扫描它并为每个名称构建/执行SQL(包括OUTFILE
值)。