2012-04-27 2 views
0

안녕하세요, 최대 절전 모드를 사용하여 파일에서 MySQL DB로 데이터를로드하려고합니다. hibernate + mysql + 파일에 데이터로드

org.hibernate.QueryException: Space is not allowed after parameter prefix ':' [LOAD DATA INFILE E:/uploaded/NumSerie/NS/NumSerie.txt INTO TABLE prod CHARACTER SET latin1 FIELDS TERMINATED BY ';' LINES TERMINATED BY ' 
' IGNORE 1 LINES;] 
at org.hibernate.engine.query.ParameterParser.parse(ParameterParser.java:92) 
at org.hibernate.engine.query.ParamLocationRecognizer.parseLocations(ParamLocationRecognizer.java:75) 

어떻게 그렇게이 제대로 실행이 쿼리를 다시 작성할 수 있습니다, 여기

쿼리입니다

session.createSQLQuery("LOAD DATA INFILE E:/uploaded/NumSerie/NS/NumSerie.txt INTO TABLE prod CHARACTER SET latin1 FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES;").executeUpdate(); 

그러나 나는 다음과 같은 오류가 발생합니다?

미리 감사드립니다.

+0

탈출 시도 : \로 : – Satya

+0

안녕 사티, 나는 그것을 시도했지만 작동하지 않았다 : ( – user732362

+0

이것을 시도하십시오 : '\ r \ n'에 의해 끝나는 라인 – Satya

답변

3

나는 어떤 절전 전문가는 아니지만 그러나이 작업을 할 수있는 parameterised query

를 만들어보십시오 :

session.createSQLQuery("LOAD DATA INFILE :file INTO TABLE prod CHARACTER SET latin1 FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES;") 
    .setString("file", "E:/uploaded/NumSerie/NS/NumSerie.txt") 
    .executeUpdate(); 
+0

끝내십시오! 그것은 일했다 :) thanks :) – user732362

+1

나는 기뻐 :) 다른 사용자의 경우, 문제는 콜론을 쿼리에 사용하는 것이다. Hibernate는 이것을 해석하여 질의에 매개 변수가 있음을 의미하고 매개 변수 이름의 유효성을 검사하지 못한다. 실제 매개 변수를 사용하여 경로 문자열을 MySQL에 직접 전달할 수 있습니다. 이런 식으로 Hibernate는 콜론을 해석하려고 시도하지 않을 것이다. – dwurf