首页 > 解决方案 > 为什么我不能将数据从 CSV 文件导入到表中?

问题描述

我有一个有趣的挑战。我正在学习如何在 SQL 中使用 COPY 函数。我需要将数据从 .CSV 导入表(PostgreSQL 服务器)。但是每次当我尝试这样做时,我都会收到以下消息:

ERROR:  could not open file "/Users/olenaskoryk/Desktop/us_counties_2010.csv" for reading: Permission denied
HINT:  COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.
SQL state: 42501

我的查询是:

COPY us_counties_2010
FROM '/Users/olenaskoryk/Desktop/us_counties_2010.csv'
WITH (FORMAT CSV, HEADER);

如您所见,我正在使用 Mac。

标签: sqlpostgresql

解决方案


我假设 PostgreSQL 没有在您的计算机上本地运行。这就是服务器无法读取您的本地文件的原因。

您可能希望使用该命令通过psql会话来执行此操作。\copy

$ psql your_db_connection_url
psql (10.5)
Type "help" for help.

db=# \copy us_counties_2010 FROM '/Users/olenaskoryk/Desktop/us_counties_2010.csv' WITH (FORMAT CSV, HEADER);

psql的\copy命令COPY FROM STDIN在后台使用,通过标准输入将本地文件的内容传递给服务器,规避了服务器无法读取本地文件的限制。


推荐阅读