这是我第一次在这里问一个问题,请跟我一起承担
我正在尝试创建一个数据管道,使用aws提供的模板将S3-Bucket中的CSV文件上传到MySQL数据库表(Production1),但在执行RdsMySqlTableCreateActivity时失败。
我在myRDSTableInsertSql参数中使用的sql语句(所有列名与CSV文件匹配):
INSERT INTO `Production1` (`API`, `Normalized Month`, `DATE`, `Monthly Liquid`, `Cum Oil`, `BOPD`, `Monthly Gas Mcf/Month`, `Cum Gas`, `MCFPD`) VALUES(?,?,?,?,?,?,?,?,?);
RdsMySqlTableCreateActivity错误:
errorId
ActivityFailed:SQLException
errorMessage
No value specified for parameter 1
errorStackTrace
amazonaws.datapipeline.taskrunner.TaskExecutionException:
private.com.amazonaws.services.datapipeline.redshift.QueryStatementException: Exception No value specified for
parameter 1 while executing INSERT INTO `Production1` (`API`, `Normalized Month`, `DATE`, `Monthly Liquid`, `Cum Oil`, `BOPD`, `Monthly Gas Mcf/Month`, `Cum Gas`, `MCFPD`) VALUES(?,?,?,?,?,?,?,?,?);...
我在MySQL工作台上运行了insert命令,将(?,?,?,?,?,?,?,?,?)
替换为(1,2,3,4,5,6,7,8,9)
,然后就可以了。我正在使用的CSV文件只有2行列名,每列的值为1-9。真的不确定No value specified for parameter 1
是什么意思,任何帮助/指导真的很值得赞赏!!!
答案 0 :(得分:1)
对于使用“将S3数据加载到RDS MySQL表”模板
运行相同问题的任何人我对每个参数的值如下
myRDSTableInsertSql:
INSERT INTO tableName(`col_name1`, `col_name2`, `col_name3`, `col_name4`, `col_name5`, `col_name6`, `col_name7`, `col_name8`, `col_name9`) VALUES(?,?,?,?,?,?,?,?,?);
myRDSTableName:tableName
myRDSCreateTableSql:
CREATE TABLE tableName(`col_name1` type, `col_name2` type, `col_name3` type, `col_name4` type, `col_name5` type, `col_name6` type, `col_name7` type, `col_name8` type, `col_name9` type);
主要问题在于实际的CSV文件格式,您必须确保没有标题,并且类型完全相同。另外,请确保您的分隔符为“,”,并且CSV文件中未引用每个值。
此模板是一个很好的起点,但形成更详细/更复杂的CSV文件,使您自己的数据管道是必须的!