Search code examples
mysqlhibernateload-data-infile

hibernate + mysql + load data in file


Hi I am trying to load data from a file to Mysql DB using hibernate.

here is the query,

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

But i get the following error,

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)

How can I rewrite this query so this is executed properly?

Thanks in advance!


Solution

  • Try creating a parameterised query

    I'm no Hibernate guru but this could work:

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