我一直在尝试将数据加载到 Redshift
最近几天没有成功。我提供了正确的 IAM
集群的角色,我已授予访问权限 S3
,我正在使用 COPY
命令与 AWS
凭据或 IAM
角色,到目前为止还没有成功。这可能是什么原因?已经到了我没有太多选择余地的地步。
所以代码非常基本,没有什么花哨的。见下文:
copy test_schema.test from 's3://company.test/tmp/append.csv.gz'
iam_role 'arn:aws:iam::<rolenumber>/RedshiftCopyUnload'
delimiter ',' gzip;
我没有放置任何错误消息,因为没有。代码只是挂起,我让它运行了 40 多分钟,但没有任何结果。如果我进入 Redshift 中的查询部分,我看不到任何异常。我正在使用 Aginity 和 SQL Workbench 来运行查询。
我还尝试在 Redshift 中手动插入查询,似乎有效。 COPY 和 UNLOAD 不起作用,即使我创建了可以访问 S3 并与集群关联的角色,我仍然遇到这个问题。
想法?
编辑:已找到解决方案。基本上这是我们 VPC 内的连接问题。必须创建 VPC 端点并将其与 Redshift 使用的子网关联。
最佳答案
我同意 JohnRotenstein 的观点,需要更多信息来提供答案。我建议您采用简单的数据点和简单的表格。
这是分步解决方案,我希望通过这样做,您应该能够解决您的问题。
假设这是您的表结构。
在这里,我使用大部分数据类型来证明我的观点。
创建表销售(
salesid 整数,
佣金十进制(8,2),
销售日期,
描述 varchar(255),
created_at 时间戳默认系统日期,
update_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;
我希望,这应该可以帮助您调试问题。
关于amazon-web-services - 将数据从 S3 复制到 Redshift 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53403088/