【发布时间】:2021-09-02 16:51:21
【问题描述】:
我正在尝试将查询结果复制到 Excel 文件中:
COPY
(select c.first_name || ' ' || c.last_name AS full_name,
COUNT (p.amount) AS "NUMBER OF TRANSACTIONS",
SUM (p.amount) AS "SUM OF TRANSACTIONS",
ROUND (AVG(p.amount),1) AS "AVERAGE TRANSACTION"
FROM CUSTOMER c
INNER JOIN payment p
ON c.customer_id = p.customer_id
GROUP BY full_name
ORDER BY "AVERAGE TRANSACTION")
TO '/Library/PostgreSQL/13/bin/database/Book2.csv'
DELIMITER ',';
但我不断收到回复:
无法打开文件“/Library/PostgreSQL/13/bin/database/Book2.csv” 写作:权限被拒绝 提示:COPY TO 指示 PostgreSQL 服务器进程写入文件。您可能需要客户端设施 比如 psql 的 \copy。 SQL 状态:42501
我已尝试执行 /copy,但随后出现错误:
错误:“/”第 1 行或附近的语法错误:/COPY ^ SQL 状态:42601 字符:1
我不确定该怎么做,任何帮助将不胜感激。
【问题讨论】:
-
/Library/PostgreSQL/13/bin/database/是服务器运行所在机器上的目录吗? -
而
/copy是psql命令而不是SQL 语句,正如消息中明确指出的那样。也就是说,它不能在 pgAdmin 或psql以外的任何客户端中工作。 -
@stickybit 我从那个文件夹导入文件没问题,只能复制到。
-
服务器运行的用户是否对该目录有写权限?
-
我为 pgadmin 提供了完整的磁盘访问权限,每个人都可以在我试图复制到的 csv 文件上读写。我认为我的代码是正确的?
标签: postgresql psql pgadmin