Pliku csv nie chce się ładować do mysql z programu java

0

Gdy próbuje załadować plik csv do bazy danych

st.execute("LOAD DATA INFILE 'c:/alkohole.csv' INTO TABLE alkohole CHARACTER SET 'utf8' COLUMNS TERMINATED BY  ',' LINES TERMINATED BY  '\n';");

to wywala mi coś takiego i dane się nie ładują:

java.sql.SQLException: Data truncated for column 'c' at row 1
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2788)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2738)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:899)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:737)
	at symul_qr.Startup.loadAllFilesToTables(DatabaseCreator.java:142)
	at symul_qr.Startup.startUP(DatabaseCreator.java:66)
	at symul_qr.DatabaseCreator.main(DatabaseCreator.java:23)
BUILD SUCCESSFUL (total time: 1 second)

Gdy natomiast wpisuje te same zapytanie w konsoli to dane się ładują i komunikat o 7 ostrzeżeniach:

mysql> LOAD DATA INFILE 'c:/alkohole.csv' INTO TABLE alkohole CHARACTER SET 'utf8' COLUMNS TERMINATED BY  ',' LINES TERMINATED BY  '\n';
Query OK, 8 rows affected, 7 warnings (0.01 sec)
Records: 8  Deleted: 0  Skipped: 0  Warnings: 7

W phpMyAdmin te samo polecenie działa ok:

Wstawionych rekordów: 8. (Wykonanie zapytania trwało 0.0060 sekund(y))

LOAD DATA INFILE  'c:/alkohole.csv' INTO TABLE alkohole CHARACTER SET  'utf8' COLUMNS TERMINATED BY  ',' LINES TERMINATED BY  '\n'

W czym jest problem, że program nie chce mi ładować plików?

0

Wygląda na to, że insertujesz coś głupiego. Nie próbujesz przypadkiem wstawić czegoś dłuższego niż przewidziałeś?

0

Liczba kolumn jest ok, są oddzielone przecinkami a na końcu wiersza (ostatniej kolumny) jest [enter] czyli znak nowego wiersza zamiast przecinka.
Gdyby było to zbyt długie to z konsoli i phpmyadmin też by nie szło.
Problem może być z jdbc connector, nie wiem.

0

Rozwiązałem problem.

Brakowało wartości "IGNORE"

st.execute("LOAD DATA INFILE 'c:/alkohole.csv' IGNORE INTO TABLE alkohole CHARACTER SET 'utf8' COLUMNS TERMINATED BY  ',' LINES TERMINATED BY '\n'");

Może komuś się przyda...

1 użytkowników online, w tym zalogowanych: 0, gości: 1