sql - 为什么我不能将数据从 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。
解决方案
我假设 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
在后台使用,通过标准输入将本地文件的内容传递给服务器,规避了服务器无法读取本地文件的限制。
推荐阅读
- android - Kotlin: Make the function wait to return until for loop is complete
- makefile - 如何使用循环在另一个 Make 配方中运行 Make 配方?
- mysql - 有没有办法在mysql中使用矩阵
- python - 尝试输出语音识别程序时出现 alsa 错误
- laravel - Laravel:$images = json_decode() 上的分页;
- python - Python:结合两个共同价值的字典列表
- c# - 具有多个条件的评估 C#
- reactjs - Navigation.push 不会从路由渲染新参数
- node.js - 在 Node Js 中不使用访问密钥和密钥将文件上传到 S3 存储桶
- mysql - 如何在保留数据库结构的同时从 MySQL 中的任何数据库中删除所有数据?