2012-04-27 6 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

私はHibernateの第一人者だんが、これは仕事ができる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

+1

私はうれしいよ:)他のユーザーの場合、問題は、クエリ内のコロンの使用です。 Hibernateはこれを解釈して、クエリにパラメータがあり、パラメータ名の検証に失敗したことを意味します。実際のパラメータを使用することによって、パス文字列を直接MySQLに渡すことができます。このようにして、Hibernateはコロンを解釈しようとせず失敗します。 – dwurf

関連する問題