【问题标题】:Can't make COPY from remote host to Redshift work无法从远程主机复制到 Redshift 工作
【发布时间】:2014-09-25 06:08:20
【问题描述】:

我在本地机器上有一个 gzip 文件,想将它加载到 Redshift。 我的命令如下所示:

\COPY tablename FROM 's3://redshift.manifests/copy_from_yb01_urlinfo.txt' REGION 'us-east-1' CREDENTIALS 'aws_access_key_id=...;aws_secret_access_key=...' SSH GZIP;

但我收到一条消息“s3:/redshift.manifests/copy_from_yb01_urlinfo.txt:没有这样的文件或目录”。

但是这个文件甚至是公开的:https://s3.amazonaws.com/redshift.manifests/copy_from_yb01_urlinfo.txt。 此外,我使用其凭据的用户拥有对 S3 和 Redshift 的完全访问权限:http://c2n.me/iEnI5l.png

更奇怪的是,我可以从 AWS CLI 使用 相同的凭据 完美地访问该文件:

> aws s3 ls redshift.manifests
2014-08-01 19:32:13        137 copy_from_yb01_urlinfo.txt

如何进一步诊断?

以防万一,我通过 psql (PostgreSQL cli) 连接到我的 Redshift 集群:

PAGER=more LANG=C psql -h ....us-east-1.redshift.amazonaws.com -p 5439 -U ... -d ...

编辑:

已将文件上传到 S3 - 复制时出现相同错误... 我再次上​​传它并使用相同的凭据运行 COPY。

\COPY url_info FROM 's3://redshift-datafiles/url_info_1.copy.gz' CREDENTIALS 'aws_access_key_id=...;aws_secret_access_key=...' GZIP;

我要绝望了……

【问题讨论】:

  • 从错误消息看来,S3 路径不正确 s3:/redshift.... 而不是 s3://redshift.... 你能确认这不是错字吗?
  • 是的,错误信息只有一个正斜杠。但在我的命令中,我有两个,正如所引用的那样。

标签: amazon-web-services amazon-redshift


【解决方案1】:

由于您尝试使用清单文件复制到 RedShift,因此您需要在末尾使用 MANIFEST 命令,例如:

\COPY tablename FROM 's3://redshift.manifests/copy_from_yb01_urlinfo.txt' REGION 'us-east-1' CREDENTIALS 'aws_access_key_id=...;aws_secret_access_key=...' SSH GZIP MANIFEST;

【讨论】:

【解决方案2】:

哦。

修复方法是删除命令开头的反斜杠。 不记得为什么开始写了……其实我从本地安装的 PostgreSQL 导出数据的时候就已经开始写了。

这太愚蠢了)一只小橡皮鸭可以救我一两天。

【讨论】:

  • 啊,我明白了——在 psql shell 中确实需要在系统用户权限下执行复制,而不是 SQL 权限。
猜你喜欢
  • 1970-01-01
  • 2012-10-19
  • 2016-11-27
  • 2011-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
相关资源
最近更新 更多