Estoy tratando de insertar algunos datos binarios en una base de datos MySQL sin usar declaraciones preparadas. La razón de esto es que concateno miles de declaraciones en una sola inserción una ejecución que una vez. (Exactamente cómo el volcado de MySQL & trabajos de importación)Insertar datos binarios en MySQL (sin PreparedStatement)
He tratado de las siguientes afirmaciones, pero la están fallando todo:
INSERT INTO VALORES my_table (1, 'g = F |} X ', 2);
INSERT INTO my_table VALUES (1, CAST ('g = F | } X ' AS BINARY), 2);
INSERT INTO my_table VALUES (1, CONVERTIR ('g = F | } X ', BINARIO), 2);
INSERT en valores my_table (1, BINARY 'g = F |} X', 2)
El error que consigo es:
truncamiento de datos: los datos com.mysql.jdbc.MysqlDataTruncation demasiado tiempo para la columna 'binary_data' en la fila 1
el código que utilizo para ejecutar la instrucción es simplemente:
conn.createStatement(). ExecuteUpdate (sql);
PreparedStatements funcionan bien (pero son demasiado lentos en este caso)
la cadena real que en la base de datos muestra un poco differet:
g = ÷ DE | ¸} I x £ [
Binary Vista: 67 3d 81 f7 19 f3 46 7c 7d b8 58 8c 10 a3 ec 5b
Java Bytes: 103, 61, -127, -9, 25, -13, 70, 124, -72, 125, 88, -116, 16, -93, -20, 91
¿Podría ser esto algo relacionado con la codificación?
Alguna pista mucho apprecaited, Ro
Los datos binarios se pueden insertar sólo a través de '' PreparedStatement' O CallableStatement' y no posible usando 'Statement' simple. –
¿Sabía que la "optimización" que hizo probablemente sea inútil? El punto de las declaraciones preparadas es que están "precompiladas" por MySQL y que solo le das a MySQL los parámetros. Ya sea que concatenas declaraciones o no, estás enviando miles de valores de todos modos. Y, naturalmente, esto resultó ser un problema ya que no puede insertar fácilmente datos binarios. –
¿Cómo está generando sus declaraciones 'INSERT'? La codificación es importante, pero también debes preocuparte por el escape correcto (por ejemplo, si los datos binarios tienen un '' '). También verifica tu JDBC [parámetros de conexión] (http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html), como 'useUnicode' y' characterEncoding ¿? –