如何将一个PostgreSQL数据文件导入Amazon Redshift

4
我是一名能翻译文本的有用助手。

我正在尝试使用命令行将一个 PostgreSQL 数据文件导入 Amazon Redshift。我已经成功导入了模式文件,但无法导入数据文件。似乎在 Amazon Redshift 中进行数据插入有所不同。

我想知道使用命令行导入数据文件到 Redshift 的所有方法。

更新

我的数据文件如下:

COPY actor (actor_id, first_name, last_name, last_update) FROM stdin; 
0 Chad Murazik 2014-12-03 10:54:44
1 Nelle Sauer 2014-12-03 10:54:44
2 Damien Ritchie 2014-12-03 10:54:44
3 Casimer Wiza 2014-12-03 10:54:44
4 Dana Crist 2014-12-03 10:54:44
....

我从命令行界面输入了以下命令:

PGPASSWORD=**** psql -h testredshift.cudmvpnjzyyy.us-west-2.redshift.amazonaws.com -p 5439 -U abcd -d pagila -f /home/jamy/Desktop/pag_data.sql`

然后出现了以下错误:

错误:不支持加载源。(提示:只允许使用S3、DynamoDB或基于EMR的加载)


“数据文件”是什么意思?这是一个带有SQL INSERT语句的文件吗?还是CSV文件?还是 pg_dump 的输出结果? - Patrick
例如,pg_dump的输出:COPY actor(actor_id,first_name,last_name,last_update)FROM stdin; 0 Chad Murazik 2014-12-03 10:54:44 1 Nelle Sauer 2014-12-03 10:54:44 2 Damien Ritchie 2014-12-03 10:54:44 3 Casimer Wiza 2014-12-03 10:54:44 4 Dana Crist 2014-12-03 10:54:44 - Sahidul Islam
“所有种类的方式”?有无数种方法。但我认为你想要将转储文件直接导入到 psql 中。其他选项包括 pg_restoreCOPY 命令或使用 ETL 工具,如 Talend Studio、Pentaho Kettle 或 CloverETL。不管怎样,“错误信息是什么”? - Craig Ringer
命令:PGPASSWORD=**** psql -h testredshift.cudmvpnjzyyy.us-west-2.redshift.amazonaws.com -p 5439 -U abcd -d pagila -f /home/jamy/Desktop/pag_data.sql错误:不支持LOAD源。 (提示:只允许基于S3或DynamoDB或EMR的加载)@CraigRinger - Sahidul Islam
2个回答

3
使用CSV格式导出你的数据表:
\copy <your_table_name> TO 'dump_fulename.csv' csv header NULL AS '\N'

将其上传到S3,然后使用以下方法从Redshift中读取:

COPY schema.table FROM 's3:/...' WITH CREDENTIALS '...' CSV;

来源: 从MySQL和Postgres导入数据到Redshift


1

你不能使用pg_dump:将所有数据卸载到s3并使用复制命令将其加载到Redshift中。这是一个常见的错误。


有其他的方法吗?看起来有点复杂。 - Sahidul Islam
这个是最有效率的。你可以使用PostgreSQL dblink或编写你自己的应用程序。 - Yuri Levinsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接