Amazon s3 具有CSV扩展名的红移卸载命令

Amazon s3 具有CSV扩展名的红移卸载命令,amazon-s3,amazon-redshift,Amazon S3,Amazon Redshift,我正在使用下面的Unload命令- unload ('select * from '')to 's3://**summary.csv**' CREDENTIALS 'aws_access_key_id='';aws_secret_access_key=''' parallel off allowoverwrite CSV HEADER; 在S3中创建的文件是summary.csv000 如果我像下面这样更改并从命令中删除文件扩展名 unload ('select * from '')to

我正在使用下面的Unload命令-

unload ('select * from '')to  's3://**summary.csv**'
CREDENTIALS 'aws_access_key_id='';aws_secret_access_key=''' parallel off allowoverwrite CSV HEADER;
在S3中创建的文件是
summary.csv000

如果我像下面这样更改并从命令中删除文件扩展名

unload ('select * from '')to  's3://**summary**'
CREDENTIALS 'aws_access_key_id='';aws_secret_access_key=''' parallel off allowoverwrite CSV HEADER;
在S3中创建的文件是
summary000

有没有办法获取summary.csv,这样在将文件导入excel之前就不必更改文件扩展名


谢谢。

实际上很多人都问过类似的问题,现在文件不可能有扩展名。(但是
parquet
文件可以有)

这背后的原因是,默认情况下,红移并行导出它,这是一件好事。每个切片将导出其数据。也从文件上看,

并行

默认情况下,“卸载”会将数据并行写入多个文件, 根据集群中的切片数。默认选项 是开的还是真的。如果PARALLEL为OFF或FALSE,则卸载写入一个或多个 更多数据文件按顺序排列,绝对按照 子句,如果使用了。数据文件的最大大小为6.2 GB。 因此,例如,如果卸载13.4 GB的数据,卸载将创建 下面是三个文件

因此,它必须在6GB之后创建新文件,这就是为什么他们要添加数字作为后缀

我们如何解决这个问题? RedShift没有本机选项,但我们可以使用lambda进行一些变通

  • 为这个过程创建一个新的S3 bucket和其中的一个文件夹。(例如:
    S3://unloadbucket/redshift files/
  • 卸载文件应转到此文件夹
  • Lambda函数应根据S3 put对象事件触发
  • 然后是lambda函数,
  • 下载文件(如果文件很大,请使用EFS)
  • 将其重命名为
    .csv
  • 将同一个bucket(或不同的bucket)上载到不同的路径(例如:
    s3://unloadbucket/csvfiles/
  • 如果使用shell/powershell脚本执行以下过程,则更简单

  • 下载该文件
  • 将其重命名为
    .csv