amazon-web-services - 将数据从 S3 复制到 Redshift 挂起

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

我一直在尝试将数据加载到 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/

相关文章:

c# - 在两个 AWS 存储桶之间复制 - 从 AWS : HashStream does not support seeking 返回的流

amazon-web-services - 跳过 AWS Redshift 外部表中的标题行

amazon-web-services - 增强型 Vpc 路由的 Redshift 参数是什么

amazon-web-services - 从 Lambda 访问 Redshift - 避免 0.0.0.0/0 安全组

objective-c - 如何获取文件 Amazon S3、AWS IOS SDK 的上传日期

amazon-web-services - 在没有 S3 的情况下设置 Amazon Cloudfront

c# - AWS Cognito - 用户池 xxxx 不存在

amazon-web-services - AWS使用CodePipeline中的CodeBuild删除S3中的文件

amazon-s3 - 从 CodeShip 部署到 Elastic Beanstalk 的适当 S3 权限是什么

ruby-on-rails - 如何处理 gem 的异常