我正在尝试将我的csv文件导入/复制到PostgreSQL。但是,我遇到了这些错误。我没有对文件的导入/写入权限。 stdin会帮忙吗?Postgres文档没有提供任何例子。我今后被要求进行批量插入,但由于混合数据类型的列太多,我不确定如何进一步继续。
复制csv文件的命令:
COPY sales.sales_tickets
FROM 'C:/Users/Nandini/Downloads/AIG_Sales_Tickets.csv'
DELIMITER ',' CSV;
错误:必须是超级用户才能复制到文件或来自文件 提示:任何人都可以复制到stdout或stdin。 psql' s \ copy命令也适用于任何人 1声明失败。
批量插入的命令太长时间了:
insert into sales.sales_ticket values (1,'2',3,'4','5',6,7,8,'9',10','11');
请建议。谢谢。
答案 0 :(得分:0)
来自PostgreSQL docummentation on COPY
:
COPY命名文件或命令仅允许数据库超级用户,因为它允许读取或写入服务器有权访问的任何文件。
和
COPY命令中指定的文件由服务器直接读取或写入,而不是由客户端应用程序读取或写入。因此,它们必须驻留在数据库服务器计算机上,或者可以访问它们,而不是客户端。它们必须可由PostgreSQL用户(服务器运行的用户ID)访问,可读写,而不是客户端。类似地,用PROGRAM指定的命令由服务器直接执行,而不是由客户端应用程序执行,必须由PostgreSQL用户执行。 COPY命名文件或命令只允许用于数据库超级用户,因为它允许读取或写入服务器有权访问的任何文件。
您尝试使用COPY
命令违反了两项要求:
COPY
命令。这不会奏效。如果您需要执行此类COPY
,则需要:
COPY
命令。<强>替代强>
如果您无法执行其中某些操作,则可以始终使用pgAdmin 4
等工具并使用其Import/Export functionality。