S3到MySQL AWS Data Pipeline插入表错误

时间:2018-02-22 14:55:51

标签: mysql amazon-web-services amazon-s3 amazon-rds amazon-data-pipeline

这是我第一次在这里问一个问题,请跟我一起承担

我正在尝试创建一个数据管道,使用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是什么意思,任何帮助/指导真的很值得赞赏!!!

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文件,使您自己的数据管道是必须的!