2013-04-30 3 views
0

Мне нужно обновить таблицу, используя массовое обновление в Eclipse. Запрос выглядит следующим образом:BULK UPDATE с использованием файла в Eclipse

BULK INSERT test_db.temp_accounts FROM 'test_file.txt' WITH (FIELDTERMINATOR = ' ', ROWTERMINATOR = '\n') 

Но проблема в том, когда я использую это в Eclipse, после подключения к базе данных с помощью JDBC соединения, что я получаю это ошибка синтаксиса.

Фрагмент кода ниже:

Connection c = DriverManager.getConnection(CONNECTION,p); 
PreparedStatement stmt = c.prepareStatement("BULK INSERT test_db.temp_accounts FROM 'test_file.txt' WITH (FIELDTERMINATOR = ' ', ROWTERMINATOR = '\n')"); 
try 
{ 

}catch (Exception e) { 
    e.printStackTrace(); 
}finally { 
    stmt.close(); 
    c.close(); 
} 

Файл «test_file.txt» находится в том же каталоге, что и файл класса Java. Может кто-нибудь, пожалуйста, укажите правильный синтаксис здесь, спасибо.

ответ

0

Вы пытаетесь использовать абсолютный путь к файлу, например. Если вы используете Linux-машину, это может быть примерно так: /home/user/workspace/project_name/src/java/test_file.txt.

Вы можете найти реальное имя пути любого файла в Eclipse, щелкнув правой кнопкой мыши файл и выбрав параметр «Свойства», который затем покажет абсолютный путь к этому файлу.

Кроме того, вы пытались изменить имя файла на test_file.sql, а не заканчивать на .txt.

+0

В журналах ошибок говорится: «У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с« BULK INSERT »в test_db.temp_accounts FROM« test_file.txt »WITH (FIELDTERMINATO 'в строке 1. Я использую серверную версию SQL 5.1.69. Абсолютный путь тоже не работает. – pkumar

+0

Вы пытались использовать PreparedStatement # addBatch() и PreparedStatement # executeBatch(), как показано в следующем потоке: http: //stackoverflow.com/questions/4355046/java-insert-multiple-rows-into-mysql-with-preparedstatement – blackpanther

Смежные вопросы