2012-04-27 35 views
0

嗨我正試圖從文件加載數據到MySQL數據庫使用休眠。休眠+ mysql +加載文件中的數據

這裏是查詢,

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(); 

,但我得到以下錯誤,

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) 

我怎麼能改寫這個查詢,以便這是正確執行?

在此先感謝!

+0

試圖逃跑:用\: – Satya 2012-04-27 13:02:12

+0

嗨薩蒂亞,我試過了,但它沒有工作: ( – user732362 2012-04-27 13:22:03

+0

試試這個:LINES TERMINATED BY'\ r \ n' – Satya 2012-04-27 13:25:50

回答

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

真棒!它工作:)謝謝:) – user732362 2012-04-27 13:35:51

+1

我很高興:)對於其他用戶,問題是在查詢中使用冒號。 Hibernate解釋這意味着查詢中有一個參數,並且無法驗證參數名稱。通過使用實際參數,我們可以將路徑字符串直接傳遞給MySQL。這樣Hibernate不會嘗試解釋冒號並失敗。 – dwurf 2012-04-27 14:46:29