Amazon web services 如何使用lambda将csv文件中的特定列复制到红移表中
我正在尝试加载S3数据,它是.csv格式的,S3 Bucket有许多文件,每个文件都有不同的列数和列顺序,当尝试使用copy命令时,数据存储在错误的列中 例如: 文件1 文件2 期望输出:Amazon web services 如何使用lambda将csv文件中的特定列复制到红移表中,amazon-web-services,amazon-s3,aws-lambda,amazon-redshift,Amazon Web Services,Amazon S3,Aws Lambda,Amazon Redshift,我正在尝试加载S3数据,它是.csv格式的,S3 Bucket有许多文件,每个文件都有不同的列数和列顺序,当尝试使用copy命令时,数据存储在错误的列中 例如: 文件1 文件2 期望输出: a_sales | client_id | event_name | event_timestamp 2039 | ccc1 | app_used | 2020-08-27 3123 | aaa2 | app_uninstalle
a_sales | client_id | event_name | event_timestamp
2039 | ccc1 | app_used | 2020-08-27
3123 | aaa2 | app_uninstalled | 2020-03-15
| aaa1 | app_launch | 2020-08-21
| bbb2 | first_launch | 2020-10-11
我已经尝试了下面的SQL脚本,它基本上运行成功,但没有给出所需的输出。有人能帮我解决这个问题吗
COPY public.sample_table
FROM 's3://mybucket/file*'
iam_role 'arn:aws:iam::99999999999:role/RedShiftRole'
FILLRECORD DELIMITER ',' IGNOREHEADER 1;
因此,“复制”命令不会根据CSV文件标题行中的文本将数据与列对齐。您需要指定要从CSV文件中填充的表的哪些列,顺序与CSV文件中指定的数据相同 见:
由于两种类型的文件具有不同的列顺序(和列),因此需要为每种类型提供不同的列列表。您可以将数据从S3存储桶复制到相应的结构映射暂存表中。 然后,您可以将数据从这两个具有不同列的表移动到一个组合表中,也可以创建一个视图,将数据从这些临时表读取到一个统一的结构中
a_sales | client_id | event_name | event_timestamp
2039 | ccc1 | app_used | 2020-08-27
3123 | aaa2 | app_uninstalled | 2020-03-15
| aaa1 | app_launch | 2020-08-21
| bbb2 | first_launch | 2020-10-11
COPY public.sample_table
FROM 's3://mybucket/file*'
iam_role 'arn:aws:iam::99999999999:role/RedShiftRole'
FILLRECORD DELIMITER ',' IGNOREHEADER 1;