我有一个CSV,它有一个可变的结构,我只想从前4个值。存储在S3中的CSV中有7到8个字段,我想只取第4个字段。我试图使用以下准备好的语句:
INSERT INTO locations (timestamp, item_id, latitude, longitude) VALUES (?, ?, ?, ?);
但是我得到了:
Parameter index out of range (5 > number of parameters, which is 4).
我认为这意味着它正在尝试加载CSV中的其他变量。是否可以采用前4个值?或以其他方式处理可变长度的CSV?
答案 0 :(得分:1)
使用transformSql选项。你没有提到你要加载的内容,来自redshift docs:
用于转换输入数据的SQL SELECT表达式。当你 从DynamoDB或Amazon S3复制数据,AWS Data Pipeline创建一个 表调用staging并最初将其加载到那里。来自此的数据 table用于更新目标表。如果是transformSql选项 如果指定,则从指定的SQL创建第二个临时表 声明。然后更新来自第二个临时表的数据 最终的目标表。必须在名为的表上运行transformSql staging和transformSql的输出模式必须匹配final 目标表的架构。