Próbuję wstawić niektóre dane binarne do bazy danych MySQL bez użycia gotowych instrukcji. Powodem tego jest to, że łączę tysiące instrukcji w jeden insert i raz. (Dokładnie w jaki sposób MySQL zrzucić & prace importu)Wstawianie danych binarnych do MySQL (bez PreparedStatement)
Próbowałem następujące oświadczenia, ale są wszystkie braku:
INSERT INTO my_table VALUES (1, 'g = F |} X ', 2);
INSERT TO my_table VALUES (1, CAST ('g = F | } X ' AS BINARY), 2);
INSERT TO my_table VALUES (1, CONVERT ("g = F | } X ", BINARY), 2);
INSERT INTO my_table wartości (1, binarny 'g = F |} X', 2)
Błąd pojawia się:
obcięcie danych:: com.mysql.jdbc.MysqlDataTruncation dane zbyt długo na kolumnie „binary_data” w wierszu 1
Kod używam do wykonania instrukcji jest po prostu:
conn.createStatement(). ExecuteUpdate (sql);
PreparedStatements działać dobrze (ale są zbyt powolne w tym przypadku)
Rzeczywista String I w bazie wyświetla trochę differet:
g = ÷ od | ¸} X £ ì [
binarne Widok: 67 3d 81 F7 19 F3 46 B8 7c 7d 58 8c 10 A3 we 5b
Java bajtów: 103, 61 -127, -9, 25, -13, 70, 124, -72, 125, 88, -116, 16, -93, -20, 91
Czy może to mieć coś wspólnego z kodowaniem?
Wszelkie wskazówki znacznie apprecaited, Ro
dane binarne można włożyć tylko przez 'PreparedStatement' lub' CallableStatement' i nie możliwe za pomocą prostego "Statement". –
Czy wiesz, że "optymalizacja", którą zrobiłeś, jest prawdopodobnie bezwartościowa? Punktem przygotowanych wypowiedzi jest to, że są one "prekompilowane" przez MySQL i po prostu przekazujesz MySQL parametry. Niezależnie od tego, czy łączysz oświadczenia, czy nie, i tak przesyłasz tysiące wartości. I oczywiście okazało się to problemem, ponieważ nie można łatwo wstawić danych binarnych. –
W jaki sposób generujesz swoje instrukcje 'INSERT'? Kodowanie prawdopodobnie ma znaczenie, ale musisz także martwić się o prawidłowe usuwanie (np. Jeśli dane binarne mają w sobie '' '). Sprawdzasz także JDBC [parametry połączenia] (http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html), takie jak 'useUnicode' i' characterEncoding '? –