CREATE EXTENSION redshift_fdw;
----optional
--CREATE FOREIGN DATA WRAPPER redshift_fdw
--HANDLER postgres_fdw_handler
--VALIDATOR postgres_fdw_validator
--OPTIONS ();
CREATE SERVER redshift_server_mydb
FOREIGN DATA WRAPPER redshift_fdw
OPTIONS (dbname 'mydb', port '5439', connect_timeout '200000', host 'myhost.redshift.amazonaws.com');
CREATE USER MAPPING FOR mypguser
SERVER redshift_server_mydb
OPTIONS (user 'myrsuser', password 'mypassword');
IMPORT FOREIGN SCHEMA redshift_schema
LIMIT TO (redshift_table)
FROM SERVER redshift_server_mydb
INTO postgresql_schema;
4条答案
按热度按时间du7egjpx1#
Redshift基于PostgreSQL克隆,但没有1-1的功能对应关系。如果你想通过S3从PostgreSQL DB加载数据到Redshift,你应该:
1.将数据从PostgreSQL卸载到CSV文件。要做到这一点,请使用psql的copy命令。另请参阅此问题here。
1.在S3上复制CSV文件。有不同的方法可以执行此操作,但请查看文档here
1.使用COPY命令将数据从S3加载到Redshift
6mzjoqzu2#
在Redshift上,您可以创建一个表来接收数据:
CREATE TABLE redshift_schema.redshift_table (...);
然后在PostgreSQL RDS中创建一个外部数据 Package 器、服务器和表的虚拟幻影:
现在在PostgreSQL中,你可以(如果你喜欢的话,在一个函数中)从PostgreSQL表中加载(选择,插入,更新,删除)Redshift表(不使用dblink):
现在,当您查看Redshift表时,所有数据都在那里,您可以根据需要将表卸载到S3。
nhaq1z213#
我使用了下面的代码片段:
您还可以查看以下链接:
https://docs.aws.amazon.com/redshift/latest/dg/t_Unloading_tables.htmlhttps://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD_command_examples.html
pb3skfrl4#
要将数据从PostgreSQL RDS示例导出到S3,请使用aws_s3扩展:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/postgresql-s3-export.html