将数据从S3复制到Redshift挂起

时间:2018-11-20 23:19:31

标签: amazon-web-services amazon-s3 amazon-redshift

最近几天,我一直在尝试将数据加载到Redshift中,但没有成功。我已经为群集提供了正确的IAM角色,已经授予了S3的访问权限,我正在使用COPY凭据或{{1 }}角色,到目前为止没有成功。这可能是什么原因?到了我没有太多选择的余地。

所以代码很基本,没有花哨的地方。见下文:

AWS

我没有输入任何错误消息,因为没有错误消息。该代码只是挂起,我已经将其运行了40分钟以上,没有任何结果。如果我进入Redshift的“查询”部分,则看不到任何异常。我正在使用Aginity和SQL Workbench运行查询。

我还尝试在Redshift中手动插入查询,并且似乎可行。 COPY和UNLOAD不起作用,即使我创建了具有对S3的访问权限并与群集关联的角色,我仍然遇到此问题。

有想法吗?

编辑:已找到解决方案。基本上,这是我们VPC中的连接问题。必须创建一个VPC端点并将其与Redshift使用的子网关联。

1 个答案:

答案 0 :(得分:0)

我同意约翰·罗滕斯坦(JohnRotenstein)的观点,那里需要更多信息来提供答案。我建议您采取简单的数据点和简单的表格。 这是分步解决方案,希望这样做,您应该能够解决您的问题。

假设这里是您的表结构。

在这里,我正在处理大多数数据类型以证明我的观点。     创建表销售(     salesid整数,     佣金十进制(8,2),     销售日期,     说明varchar(255),     created_at时间戳默认系统日期,     时间戳);

为了简单起见,这是您的数据文件驻留在S3中。
CSV(sales-example.txt)中的内容

salesid,commission,saledate,description,created_at,updated_at
1|3.55|2018-12-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
2|6.55|2018-01-01|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
4|7.55|2018-02-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
5|3.55||Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
7|3.50|2018-10-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51

使用psql终端或任何sql连接器运行以下两个命令。确保还运行第二个命令。

copy sales(salesid,commission,saledate,description,created_at,updated_at) from 's3://example-bucket/foo/bar/sales-example.txt' credentials 'aws_access_key_id=************;aws_secret_access_key=***********' IGNOREHEADER  1;

commit;

我希望这可以帮助您调试问题。