Gibt es eine Möglichkeit in current_date passieren Befehl für die S3-PfadAWS Redshift Kopieren-Befehl Dynamische Quelldateipfad
für ex zu kopieren: von Copy name ‚s3/rootlocation/_current_date_ /*.txt in AWS Redshift
Gibt es eine Möglichkeit in current_date passieren Befehl für die S3-PfadAWS Redshift Kopieren-Befehl Dynamische Quelldateipfad
für ex zu kopieren: von Copy name ‚s3/rootlocation/_current_date_ /*.txt in AWS Redshift
John ist richtig, es ist nicht möglich, die COPY
-Anweisung dynamisch zu erstellen. Allerdings fand ich einen Weg, dies zu umgehen, nur unter Verwendung von SQL, mit nur ein paar mehr Befehlen:
create temporary table _path as
select (
'{"entries":[{"url":"s3://bucket/customer' ||
getdate()::date ||
'.txt", "mandatory":true}]}'
)::varchar(255)
;
unload ('select * from _path') to 's3://bucket/customer.manifest'
credentials '' parallel off
;
copy customer from 's3://bucket/customer.manifest000' credentials '' manifest;
Siehe http://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html und http://docs.aws.amazon.com/redshift/latest/dg/loading-data-files-using-manifest.html.
Meine Experimente haben gezeigt, dass der FROM Parameter eine einzelne Zeichenfolge sein muss, anstatt einen berechneten Wert. Daher ist es nicht möglich , so etwas zu tun:
copy customer
from 's3://mybucket/customer' + CURRENT_DATE
credentials '<aws-auth-args>';
Sie müßten die Zeichenfolge vor Senden an Redshift berechnen, durch welches System Sie verwenden, um den COPY
Befehl auszulösen.
Eine andere ähnliche Methode ist die Verwendung einer manifest file, die eine Liste der zu ladenden Dateien enthält. Dies ist nützlich in Situationen, in denen viele Dateien in einem bestimmten Verzeichnis gespeichert sind und nur einige geladen werden müssen. Es vermeidet auch Verwirrung darüber, welche Dateien in einem Ladevorgang enthalten waren.
Danke Moertel, ich denke, das wird für mich funktionieren. – user2752404