从 CSV 文件中查询 PostgreSQL 数据库

4

什么是从.csv文件查询的最简单方法?

例如:我有一个包含1000个电子邮件地址的emails.csv文件。

我想查询所有在emails.csv文件中出现的电子邮件地址对应的用户,例如:

SELECT * 
FROM users 
WHERE email IN (emails.csv)

有没有一种方法可以像这样做某些事情,或者我需要创建一个脚本。如果需要一些脚本,请提供一些示例。


你需要创建一个表格,并从 CSV 文件中复制它。 - Vao Tsun
如果文件位于数据库服务器上,您可以通过file_fdw扩展来使用它。 - user330315
1个回答

5
您需要创建一个表格并将其从CSV文件中进行复制,如下所示:

您需要创建一个表格并复制它从CSV文件,类似于:

t=# create table csv(i int,email text);
CREATE TABLE
t=# copy csv(email) from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> q
>> w
>> \.
COPY 2
t=# select * from csv;
 i | email
---+-------
   | q
   | w
(2 rows)

但是在您的情况下,您是从文件中复制而不是从STDIN中复制,例如:
copy csv(email) from '/path/to/file';

嗯,我认为公司不想为此目的添加表格。无论如何,感谢您的建议。 - Fi3n1k
1
@Fi3n1k:嗯,查询只能使用表格。除非您创建某种类型的表格,否则无法使用这些CSV值。如果您想要,可以将其放入临时表中。 - user330315
1
根据您的情况,您可以使用“CREATE TEMPORARY TABLE”命令创建一个表,该表仅对当前事务可访问,并在事务结束时停止存在。除此之外,还有很多技巧可以用于此基础上。 - Haroldo_OK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接