2014-02-21 2 views
2

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  

두 데이터베이스 사이의 열 데이터 형식이 다르기 때문에 이것이 가능합니까? 또는 나는 다른 것을 놓치고 있는가?

도와주세요.

+0

왜 새로운 studentMapper()가 필요합니다. JdbcTemplate의 업데이트 메소드가'RowMapper'를 올바르게 받아들이지 않습니까? 사용자 정의 구현을 사용하고 있습니까? –

+0

잘 잡으세요! 그래서 하드 INSERT 문을 값으로 코딩했지만 여전히 오류가 발생했습니다. 중첩 예외는 org.netezza.error.NzSQLException입니다. 매개 변수 인덱스가 범위를 벗어났습니다 : 1 – Ram

+0

편집 된 질문. – Ram

답변

1

new studentMapper()이 문제 일 수 있습니다. JdbcTemplate의 업데이트 메소드가 RowMapper를 올바로 수락하지 않습니까?

NamedParameterJdbcTemplate을 사용하지 않는 경우 일반 매개 변수 JdbcTemplate 이상을 사용하면 sql 매개 변수를 이름과 바인딩 할 수 있습니다.

관련 문제