1

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

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

例如:

表 A 有

(ID, Name, Stuff), Name独特的

表 B 有

(ID, Name, Start, End)

Name我想将 B 中存在的所有行转储A到基于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 中存在的每个名称。

4

1 回答 1

0

为了确保Name存在于表中A,只需加入AB在名称上:

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

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

于 2013-04-06T21:15:35.720 回答