2012-03-10 2 views
1

У меня есть CVS файл, схемы, каждое поле окружено», и разделённая, и каждый кортеж новая строка с \ пИспользования «LOAD DATA LOCAL INFILE» в Java

Так что в моем файле Java я написал

   String path = "o.csv"; 
       String esquel = " LOAD DATA LOCAL INFILE " + path + 
          " INTO TABLE recommendations " + 
          " FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"'" + 
          " LINES TERMINATED BY \'\\n\'"; 

И я исполняю заявление со следующим утверждением

statement.executeUpdate(esquel); 

Но он бросает SQLException, который говорит:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «o.csv INTO рекомендацией ТАБЛИЦЫ ПОЛОГО TERMINATED BY»,», заключенное«"» LINES ' в строке 1

Что это моя ошибка?

Я бы признателен, если вы можете помочь мне.

Благодаря

ответ

1

О, я получил это! Я не окружать свой путь к файлу с.

Новое заявление SQL должно быть:

String esquel = " LOAD DATA LOCAL INFILE '" + path + 
          "' INTO TABLE recommendations " + 
          " FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"'" + 
          " LINES TERMINATED BY \'\\n\'"; 
1

Вот рабочий код, который я тестировал:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class LoadTRPLog2MySql { 

    public static void main(String[] args) { 

     Class driver_class = null; 
     try { 
      driver_class = Class.forName("com.mysql.jdbc.Driver"); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
      return; 
     } 
     System.out.println("found driver" + driver_class); 


     Connection connection = null; 
     try { 
      connection = DriverManager.getConnection("jdbc:mysql://mysqlserver.com:3306/dbname", "myid","pwd"); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 

     try { 
      System.out.println("Established connection to " + connection.getMetaData().getURL()); 
     } catch (SQLException e1) { 
      e1.printStackTrace(); 
     } 

     Statement statement = null; 
     try { 
      statement = connection.createStatement(); 
      Statement statement1 = connection.createStatement(); 
      //windows 
      //statement1.executeUpdate("LOAD DATA LOCAL INFILE 'C:\\Users\\senthil_sivasamy\\Documents\\Projects\\messageprocessing\\log.txt' INTO TABLE trpwatchlog_tb FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\\n'"); 
      //linux (" LOAD DATA LOCAL INFILE '/home/username/logname.log' INTO TABLE logname.log FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\\n'"); 
      statement.executeUpdate("LOAD DATA LOCAL INFILE '/home/username/avail30trplog' INTO TABLE logname.log FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\\n'"); 

      statement1.execute("select * from dbname.tablelog_tb"); 
      ResultSet rs = statement1.getResultSet(); 
      System.out.println("Row hostname and timestamp"); 
      while(rs.next()) { 
       System.out.println("Row hostname and timestamp"); 
       System.out.println(rs.getRow()); 
       System.out.println(""+rs.getString("hostname")); 
       System.out.println(""+rs.getString("timestamp")); 
      } 
      rs.close(); 
     } catch(SQLException e) { 
     } finally { 
      if (statement != null) { 
       try { 
        statement.close(); 
       } catch (SQLException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     if (connection != null) { 
      try { 
       connection.close(); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
Смежные вопросы