我有一个使用亚马逊的RDS服务托管的数据库,我正在尝试编写一个将更新所述数据库的Web服务。我遇到的问题是它不会让我使用COPY命令,因为我收到此错误:“错误:必须是超级用户才能复制到文件或从文件复制”。我正在使用我为数据库做的唯一用户,我相当确定它拥有超级用户访问权限。但是,我可以使用PGAdmin的导入工具导入数据,当查看日志时,它几乎使用与我相同的命令。唯一的区别是它有stdin的文件路径。我该如何解决这个错误?
答案 0 :(得分:14)
您正在使用:
COPY tablename FROM 'filename';
这不会起作用 - RDS不知道'文件名'是
您必须使用psql
命令\copy
,该命令来自本地客户端,或者PgAdmin-III"导入数据"选项。
答案 1 :(得分:0)
不使用psql
1)使用简单的复制命令
将数据本地导入临时表2)右键单击pgAdmin III对象浏览器中的表,然后选择"备份..."
3)将格式设置为Plain并将文件另存为.sql文件
4)单击转储选项#1选项卡并选中数据
5)单击转储选项#2选项卡,然后选中使用列插入和使用插入命令
6)单击“备份”按钮
7)现在您可以打开sql文件并在RDS服务器中运行它
或者,您可以使用以下命令生成sql文件
pg_dump --host localhost --port 5432 --username "postgres" --no-password --format plain --section data --inserts --column-inserts --file "C:\test\test.sql" --table "public.envelopes" "testdb"