Вопрос по mysql – hibernate + mysql + загрузка данных в файл

0

Привет я пытаюсь загрузить данные из файла в Mysql DB с помощью Hibernate.

вот запрос,

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

Но я получаю следующую ошибку,

<code>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)
</code>

Как я могу переписать этот запрос, чтобы он выполнялся правильно?

Заранее спасибо!

Привет Сатья, я пробовал, но это не сработало :( user732362
спасибо за ваше время, решение dwurf сработало :) user732362
попробуйте убежать: с \: Satya
попробуйте это: ЛИНИИ, ПРЕКРАЩАЕМЫЕ & apos; \ r \ n & apos; Satya

Ваш Ответ

1   ответ
3

параметризованный запрос

Я не гуру Hibernate, но это может сработать:

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();
Я рад :) Для других пользователей проблема заключается в использовании двоеточия в запросе. Hibernate интерпретирует это как означающее, что в запросе есть параметр и не удается проверить имя параметра. Используя фактический параметр, мы можем передать строку пути непосредственно в MySQL. Таким образом, Hibernate не будет пытаться интерпретировать двоеточие и потерпит неудачу.
классно! это сработало :) спасибо :) user732362

Похожие вопросы