来自 csv 文件的 PostgreSQL 查询 [重复]

Posted

技术标签:

【中文标题】来自 csv 文件的 PostgreSQL 查询 [重复]【英文标题】:PostgreSQL query from csv file [duplicate] 【发布时间】:2018-07-10 16:48:27 【问题描述】:

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

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

我想用emails.csv 文件中的电子邮件查询所有用户 例如:

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

有没有办法做这样的事情,或者我需要创建一个脚本。如果需要一些脚本,请您提供一些示例。

【问题讨论】:

你需要创建一个表并从csv复制它 如果文件位于数据库服务器上,您可以通过file_fdw 扩展名使用它 【参考方案1】:

您需要从 csv 创建一个表并 copy 它,例如:

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)

但在您的情况下,您是从文件中复制,而不是从标准输入,例如

copy csv(email) from '/path/to/file';

【讨论】:

hmm 我认为公司不想为此添加表格。无论如何感谢您的建议 @Fi3n1k:好吧,查询只能与表一起使用。除非您创建某种表格,否则您无法使用这些 CSV 值。如果需要,您可以将其放入临时表中

以上是关于来自 csv 文件的 PostgreSQL 查询 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 PostgreSQL 查询输出导出到 csv 文件

带有两个 NULL 字符串的 PostgreSQL COPY CSV

Spark 使用 Data Frame 读取 CSV 文件并从 PostgreSQL DB 查询

db.session.commit()不能在postgresql(Heroku)中导入CSV文件

将 Mysql CSV 导入 PostgreSQL

CSV 文件数据到 PostgreSQL 表中