如何将 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 的负载
【问题讨论】:
“数据文件”是什么意思?那是带有 SQLINSERT
语句的文件吗? 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_restore
、COPY
命令,或使用 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 数据库?
如何在windows的“omnidb”中将csv文件数据导入postgresql