我在mySQL数据库表中有数据。我正在选择此数据并尝试将其插入Netezza数据库表。我正在使用spring框架,并有一个名为Student的实体类。
mySQL数据库表中的某些字段采用整数格式,但Netezza中的等效字段采用字符格式。
我正在使用JDBC模板并从mySQL获取数据并将该Student对象插入Netezza。
这是我的方法:
String sqlStudent="INSERT INTO STUDENT(STUDENTID,CLASSID,COURSEID,TESTDATE,SCOREDATE) VALUES (?,?,?,?,?)";
netezzaJDBCTemplate.update(sqlStudent,new Object[] {student.getStudentId(),student.getClassId(),student.getCourseId(),student.getTestDate(),student.getScoreDate)});
我这样做时出错了。我甚至尝试过对INSERT进行硬编码。
Exception in thread "main" org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [INSERT INTO STUDENT(STUDENTID,CLASSID,COURSEID,TESTDATE,SCOREDATE) VALUES (1521995,134,21,'2014-02-15 00:00:00','2014-02-15 00:00:00') )]; nested exception is org.netezza.error.NzSQLException: Parameter Index out of range: 1
这是因为2个数据库之间的列数据类型不同吗?或者我错过了其他什么?
请帮忙。
答案 0 :(得分:1)
new studentMapper()
可能是个问题。 JdbcTemplate的更新方法不会接受RowMapper的正确吗?
如果您没有使用NamedParameterJdbcTemplate
,请尝试优先于常规JdbcTemplate
,这样可以将sql参数与名称绑定。