我想使用步骤S3 CSV Input
从s3存储桶加载多个文件,然后转换并加载回S3。但我可以看到此步骤一次只支持一个文件,我需要提供文件名,有没有办法通过只提供桶名<s3-bucket-name>/*
一次加载所有文件?
答案 0 :(得分:2)
S3-CSV-Input
的灵感来自CSV-Input
,并且不支持像Text-File-Input
这样的多文件处理。您必须先retrieve the filenames,因此您可以像使用CSV-Input
一样遍历文件名列表。
答案 1 :(得分:0)
两个选项:
AWS CLI方法
编写一个简单的shell脚本,该脚本调用AWS CLI。把它放在你的路径。称为s3.sh
aws s3 ls s3://bucket.name/path | cut -c32-
在PDI中:
生成行:Limit
1,字段:Name
:进程,Type
:字符串,Value
s3.sh
执行流程:Process field
:流程Output Line Delimiter
|
将字段拆分为行:Field to split
:结果输出。 Delimiter
| New field name
:文件名
S3 CSV输入:The filename field
:文件名
S3本地同步
使用s3fs
将S3目录挂载到本地目录如果该存储区目录中有许多大文件,那么它的运行速度将不会如此之快...如果您的PDI在Amazon计算机上运行,则可能没问题
然后使用标准的文件读取工具
$ s3fs my-bucket.example.com/path/ ~/my-s3-files -o use_path_request_style -o url=https://s3.us-west-2.amazonaws.com