gpt4 book ai didi

postgresql - Postgres :\copy syntax

转载 作者:行者123 更新时间:2023-11-29 12:02:36 28 4
gpt4 key购买 nike

使用 CentOS 7 上的 PostgreSQL 9.5,我创建了一个名为 sample 的数据库以及几个表。我在每个表的 /home/MyUser/data 中都有 .csv 数据。 例如,表 "TableName" 存在 TableName.csv

如何将 csv 文件加载到每个表中?


我尝试过的方法不起作用,我无法弄清楚我做错了什么。

从数据库中加载

$ psql sample

sample=# COPY "TableName" FROM '/home/MyUser/data/TableName.csv' WITH CSV;

ERROR: could not open file "/home/MyUser/data/TableName.csv" for reading: Permission denied

这意味着文件权限问题。 data/ 中的所有文件都是 -rw-r--r--,目录本身是 drwxr-xr-x。所以文件权限不应该是问题(除非我遗漏了什么)。网上说 COPY 有权限问题,试试 \copy

从 CLI 加载

$ psql \copy sample FROM /home/MyUser/data/TableName.csv WITH CSV

psql: warning: extra command-line argument "FROM" ignored
psql: warning: extra command-line argument "/home/MyUser/data/TableName.csv" ignored
psql: warning: extra command-line argument "WITH" ignored
psql: warning: extra command-line argument "CSV" ignored
psql: FATAL: Peer authentication failed for user "sample"

这似乎是一个语法错误,但我没有发现文档特别有用(man psql 然后是 /\copy)。我也尝试了以下相同的结果。

$ psql \copy sample."TableName" FROM /home/MyUser/data/TableName.csv WITH CSV
$ psql \copy sample FROM /home/MyUser/data/TableName.csv WITH DELIMITER ','

还有其他几种排列会产生类似的错误。

使用的网络资源

最佳答案

关于权限:

不要忘记,要访问文件,您需要路径中所有 目录的权限。因此,例如,如果操作系统用户 postgres/home/MyUser 目录没有权限,您将收到观察到的错误消息。

关于\copy:

您必须使用 -c 选项向 psql 提供命令:

$ psql -c "\copy sample FROM '/home/MyUser/data/TableName.csv' WITH (FORMAT CSV)"

关于postgresql - Postgres :\copy syntax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48872965/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com