将CSV复制到Amazon RDS托管的Postgresql数据库

时间:2014-08-08 14:54:39

标签: postgresql csv amazon-web-services amazon-rds pgadmin

我有一个使用亚马逊的RDS服务托管的数据库,我正在尝试编写一个将更新所述数据库的Web服务。我遇到的问题是它不会让我使用COPY命令,因为我收到此错误:“错误:必须是超级用户才能复制到文件或从文件复制”。我正在使用我为数据库做的唯一用户,我相当确定它拥有超级用户访问权限。但是,我可以使用PGAdmin的导入工具导入数据,当查看日志时,它几乎使用与我相同的命令。唯一的区别是它有stdin的文件路径。我该如何解决这个错误?

2 个答案:

答案 0 :(得分:14)

您正在使用:

COPY tablename FROM 'filename';

这不会起作用 - RDS不知道'文件名'是

您必须使用psql命令\copy,该命令来自本地客户端,或者PgAdmin-III"导入数据"选项。

The RDS manual covers this in more detail

答案 1 :(得分:0)

不使用psql

的解决方法

1)使用简单的复制命令

将数据本地导入临时表

2)右键单击pgAdmin III对象浏览器中的表,然后选择"备份..."

Right click Table and select Backup..

3)将格式设置为Plain并将文件另存为.sql文件

Set Format to Plain

4)单击转储选项#1选项卡并选中数据

Dump Options #1

5)单击转储选项#2选项卡,然后选中使用列插入和使用插入命令

Dump Options #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"