将数据从s3导入Redshift时保留源文件名

时间:2017-01-27 08:33:17

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

我在s3存储桶中有大量文件,通常会将其导入Redshift。由于文件数量很大,我需要Redshift表中的一列,该列应包含来自s3位置的源文件名。

有没有办法解决问题?

2 个答案:

答案 0 :(得分:1)

这是不可能的。在Copy操作期间,Redshift仅将文件内容加载到表中;它不提供对S3文件名的访问。

要实现您的目标,您需要预处理数据,以便在文件中添加的其他信息。

答案 1 :(得分:1)

同意Ketan,目前在Redshift中无法实现这一目标。如果这是你想要达到的目的,可以通过

来实现
  1. 以编程方式读取S3文件并以文件名作为列编写新的S3文件并加载新文件
  2. 或者,使用Hive。在S3文件存储桶位置创建外部表,并使用 INPUT__FILE__NAME 获取文件名,创建新表,然后写回S3。您也可以在Hive中进行一些预处理。
  3. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+VirtualColumns

    希望这有帮助。