从一个数据库表插入另一个数据库表

时间:2014-02-21 21:19:59

标签: java mysql spring netezza

我在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个数据库之间的列数据类型不同吗?或者我错过了其他什么?

请帮忙。

1 个答案:

答案 0 :(得分:1)

new studentMapper()可能是个问题。 JdbcTemplate的更新方法不会接受RowMapper的正确吗?

如果您没有使用NamedParameterJdbcTemplate,请尝试优先于常规JdbcTemplate,这样可以将sql参数与名称绑定。