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

Posted

技术标签:

【中文标题】如何将 PostgreSQL 数据文件导入 Amazon Redshift【英文标题】:How to import a PostgreSQL data file into Amazon redshift 【发布时间】:2015-05-15 05:39:18 【问题描述】:

我正在尝试使用我的命令行将 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
....

我从 CLI 输入了以下命令:

PGPASSWORD=**** psql -h testredshift.cudm***jzyyy.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的输出? 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 “各种方式[s]”?有无穷无尽的方法。但我认为听起来您只想将转储输入psql。其他选项包括pg_restoreCOPY 命令,或使用 Talend Studio、Pentaho Kettle 或 CloverETL 等 ETL 工具。无论如何,错误信息是什么 命令:PGPASSWORD=**** psql -h testredshift.cudm***jzyyy.us-west-2.redshift.amazonaws.com -p 5439 -U abcd -d pagila -f /home/jamy/ Desktop/pag_data.sql 错误:不支持加载源。 (提示:仅允许基于 S3 或 DynamoDB 或 EMR 的负载)@CraigRinger 【参考方案1】:

使用 CSV 格式转储您的表格:

\copy <your_table_name> TO 'dump_fulename.csv' csv header NULL AS '\N'

将其上传到 S3,并使用以下命令从 redshift 中读取:

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

来源:Importing Data into Redshift from mysql and Postgres

【讨论】:

【参考方案2】:

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

【讨论】:

还有什么办法吗??看起来有点复杂 这个效率最高。您可以使用 postgresql dblink 或编写您的应用程序。

以上是关于如何将 PostgreSQL 数据文件导入 Amazon Redshift的主要内容,如果未能解决你的问题,请参考以下文章

如何将 .csv 文件导入 Hasura PostgreSQL 数据库?

将文件从 PostgreSQL 导入到 R

如何在windows的“omnidb”中将csv文件数据导入postgresql

PostgreSQL数据导出导入问题,谢谢

如何将镶木地板文件从 s3 导入到 postgresql rds

如何导入PostgreSQL数据库数据