如何将资源附加的CSV文件导入PGAdmin数据表?解决权限拒绝报错
解决COPY导入CSV时的"Permission denied"问题
首先修正你的COPY语句语法错误:原语句里"Enrollment_no"后面多了一个双引号,正确语句应该是:
COPY PUBLIC."Science_Class"("Enrollment_no", "name", "marks") FROM 'c:\users\HP\Student.csv' CSV HEADER;
接下来针对权限问题,按以下步骤排查解决:
检查PostgreSQL服务用户的文件访问权限
PostgreSQL服务由特定系统用户运行(Windows下通常是postgres用户),该用户需要具备读取目标CSV文件的权限:- 右键CSV文件,选择「属性」→「安全」标签
- 点击「编辑」,添加
postgres用户(或当前运行PostgreSQL服务的用户) - 给该用户分配「读取」权限后保存设置
改用psql的\copy命令代替服务器端COPY
服务器端COPY是由PostgreSQL服务进程读取文件,而\copy是由客户端(PGAdmin查询工具)读取文件后发送给服务器,可绕开服务用户权限限制。在PGAdmin查询工具中执行:\copy PUBLIC."Science_Class"("Enrollment_no", "name", "marks") FROM 'c:\users\HP\Student.csv' CSV HEADER;移动CSV文件到服务有权限的目录
将CSV文件复制到PostgreSQL默认有权限的目录(比如C:\Program Files\PostgreSQL\<版本号>\data),再修改COPY语句中的文件路径。调整路径格式
Windows路径中的反斜杠可改用双反斜杠\\或正斜杠/避免转义问题,示例:COPY PUBLIC."Science_Class"("Enrollment_no", "name", "marks") FROM 'c:/users/HP/Student.csv' CSV HEADER;
内容的提问来源于stack exchange,提问作者David Dewortor
相关产品推荐
相关产品推荐

