我有一个包含以下信息的 SQL 文件:
CREATE TABLE 'people' (
'id' int(11) UNSIGNED NOT NULL,
'email' varchar(255) DEFAULT NULL,
'name' varchar(255) DEFAULT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO 'people' ('id', 'email', 'name') VALUES
(1, 'a@gmail.com', 'john doe'),
(2, 'b@gmail.com', 'jane doe'),
...
(1000, 'x@gmail.com', 'big cat');
如何在文本文件中查询包含电子邮件列表(每行一个)的 people.sql 文件,并将电子邮件和名称配对写入新的 csv?
最佳答案
假设您已经执行了上面的文件并将数据放入mySQL DB。
可以使用select命令写入csv文件。
SELECT email, name FROM people INTO OUTFILE 'yourfile.csv' FIELDS
TERMINATED BY ','
在您更新的评论中,您只是想将文本文件中的人名映射到 SQL 命令以执行查询。如果把问题分解,就会变成两个任务。首先是从给定的列表中选择名称,这可以通过以下方式完成:
SELECT email, name FROM people WHERE name IN ('john', 'alice', 'bob') INTO
OUTFILE 'yourfile.csv' FIELDS TERMINATED BY ','
上面会根据给定的列表生成一个映射。但是您的第二个需要是从文本文件中获取该列表。一种方法是使用 sed
和 tr
实用程序将“每行一个名称”转换为“带逗号的名称列表” .
cat your-name-list.txt | sed -e "s/\([a-zA-Z0-9\=\.\-]*\)/'\1'/g" | tr "\n" ","
不知道你的环境怎么样。但基本上,您想将此结果用作上述 SQL 中的查询条件。希望这能给你足够的想法。
关于python - 将 SQL 文件查询为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44393781/