Строка 1 не содержит данных для всех столбцов Ошибка MySQL JDBC Eclipse

0

Я пытаюсь вставить содержимое файла.csv в таблицу базы данных, используя java-программу в eclipse. Однако я получаю следующее сообщение об ошибке.

Exception in thread "main" java.sql.SQLException: Row 1 doesn't contain data for all columns

Я просмотрел похожие сообщения, но не смог найти решение для моего кода. Любая идея, как я могу решить проблему?

Пример данных в файле csv:

tconst_titles, titleType, primaryTitle, originalTitle, isAdult, StartYear, EndYear, runtimeMinutes

tt1,short,Carmencita,Carmencita,0,1894,0000,1
tt2,short,Le clown et ses chiens,chiens,0,1892,0000,5
tt3,short,Pauvre Pierrot,Pauvre Pierrot,0,1892,0000,4

Мой код:

import java.sql.*;

public class populate { 

  public static void main(String[] args) throws SQLException {

    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/IMDB","root","user");
    Statement stmt = con.createStatement();
    String sql = 
        "load data local infile 'titles.csv' \n" +
        "   replace \n" +
        "   into table Titles \n" +
        "   columns terminated by '\\t' \n" +
        "   ignore 1 lines";
    stmt.execute(sql);
      }
}
  • 0
    Как говорится в сообщении об ошибке, строка 1 не содержит данных для всех столбцов. В вашей таблице базы данных может быть более 8 столбцов или может быть меньше данных для первой строки.
  • 0
    Добавить структуру таблицы MySQL
Показать ещё 1 комментарий
Теги:
jdbc

1 ответ

2
Лучший ответ

Проблема в вашем java-коде. Вы отделяете от \t (табл) вместо ,:

"   columns terminated by '\\t' \n" +

Эта строка должна быть:

"   columns terminated by ',' \n" +

Если вы хотите разделить столбцы на \t вы можете изменить свои данные файла csv следующим образом:

tt1 short   Carmencita  Carmencita  0   1894    0000    1
tt3 short   Pauvre_Pierrot  Pauvre_Pierrot  0   1892    0000    4
tt4 short   Pauvre_Pierrot  Pauvre_Pierrot  0   1892    0000    4

Кстати, csv означает Comma Separated Values.

  • 0
    Спасибо. Это удалило сообщение об ошибке. Тем не менее, я получаю следующее сообщение об ошибке при запуске моего кода после исправления. Исключение в потоке «main» com.mysql.jdbc.MysqlDataTruncation: усечение данных: неверное значение даты: «1894» для столбца «startYear» в строке 1. Я объявил «starYear» как «DATE» при создании таблицы. Есть идеи, почему он так говорит?
  • 0
    @ user8929822 Потому что значение не в правильном формате, чтобы соответствовать типу даты. попробуйте добавить месяц и дату. Как пример 1894-1-1
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню