Hi I trying to import txt values file into derby database using CALL SYSCS_UTIL.SYSCS_IMPORT_DATA.
Each value column is delimited by ; and the line of values is delimited by LF Line Feed.
111142501;283811110;01111000;28111004;EXPO[LF]
In my java method I'm invoking SYSCS_IMPORT_DATA like this
String driver = "org.apache.derby.jdbc.EmbeddedDriver";
String protocol = "jdbc:derby:";
Connection conexion = null;
File bd = new File(configProperties.getDdbbDir());
String absolutePathDB = bd.getAbsolutePath();
Class.forName(driver).newInstance();
Properties props = new Properties();
conexion = DriverManager.getConnection(protocol + absolutePathDB, props);
conexion.setAutoCommit(false);
Statement s = conexion.createStatement();
String queryCer = "CALL SYSCS_UTIL.SYSCS_IMPORT_DATA('ROOT','ELECTOR','COLUMN1, COLUMN2, COLUMN3, COLUMN4, COLUMN5',null,'" + + StringUtils.replace(file.getAbsolutePath(), "\\", "\\\\") + "',';', '\\n', 'UTF-8', 0)";
s.execute(queryCer);
When my applications goes by statement execute finishes with the following error:
Caused by: ERROR 22001: A truncation error was encountered trying to shrink CHAR '\n' to length 1.
I've tried to change CHARACTERDELIMITER for other values , like ", ' or null, but other errors appears. Also I've tried to import the lines enclosed by "", but does not working.
As Christoph adviced me, I've changed the invocation replacing '\n' by null (the column names are in Spanish)
CALL SYSCS_UTIL.SYSCS_IMPORT_DATA('ROOT','ELECTOR','CODIGO_CENSO, CODIGO_PROVINCIA, NOMBRE_PROVINCIA, CODIGO_MUNICIPIO, NOMBRE_MUNICIPIO, CODIGO_DISTRITO,
CODIGO_SECCION, CODIGO_SUB_SECCION, MESA, NUMERO_ORDEN, IDENTIFICADOR, PRIMER_APELLIDO_NORMALIZADO,
SEGUNDO_APELLIDO_NORMALIZADO, NOMBRE_NORMALIZADO, FECHA_NACIMIENTO, INDICADOR_CORREO, SEXO, GRADO_ESC,
PRIMER_APELLIDO_SIN_NORMALIZAR, SEGUNDO_APELLIDO_SIN_NORMALIZAR, NOMBRE_SIN_NORMALIZAR, CODIGO_CIERRE, NIE, EATIM, JUNTA_ZONA, PERIODO'
,'7,17,54,12,51,9,20,21,47,56,39,63,67,52,36,40,69,37,64,68,55,8,49,33,43,60',
'fichero.csv',';', null, 'UTF-8', 0)
but now I have the following error: java.sql.SQLException: The exception 'java.sql.SQLSyntaxErrorException: Column 'COLUMNXX' is either not in any table in the FROM list or appears within a join specification and is outside the scope of the join specification or appears in a HAVING clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE statement then 'COLUMN54' is not a column in the target table.' was thrown while evaluating an expression.
As you can see, I've included the index of column to import data values, because if it wasn't indicated the error was the following: Caused by: java.sql.SQLException: The column ID in table ELECTOR does not allow null values.
So, I have to put the index columns.
Here one register from csv file:
1;28;MADRID ;903;XXXX XXXXXX ;01;022 ; ;B;00000466;*****7***;SOMBRERO ;ROZAS ;PEPITO ;200X0404; ;V;3;PISCINAS ;ROZAS ;PEPITO ;000042501;288000000;00000000;20000000;EXPO
Y la data table has the following column names:
('ID','APELLIDO_CASADA','BLOQUE','CALIFICADOR','CIAY','CIUDAD','CODIGO_CENSO','CODIGO_CIERRE','CODIGO_DISTRITO',
'CODIGOEC','CODIGOES','CODIGO_MUNICIPIO','CODIGO_MUNICIPIO_NACIMIENTO','CODIGO_NUCLEO','CODIGO_PAIS',
'CODIGO_POSTAL','CODIGO_PROVINCIA','CODIGO_PROVINCIA_NACIMIENTO','CODIGO_PSEUDOVIA','CODIGO_SECCION',
'CODIGO_SUB_SECCION','CODIGO_TIPO_VIA','CODIGO_VIA','CONSULADO','DESCRIPCIONEC','DESCRIPCIONES','DESCRIPCION_NUCLEO',
'DESCRIPCION_PSEUDOVIA','DESCRIPCION_TIPO_VIA','DESCRIPCION_VIA','DIGITO_CONTROL_NIE','DIRECCION_POSTAL',
'EATIM','ESCALERA','FECHA_CARGA','FECHA_NACIMIENTO','GRADO_ESC','HM','IDENTIFICADOR','INDICADOR_CORREO',
'INDICADOR_INHABILITADO','IVOTO','JUNTA_ZONA','KM','LETRA_DNI','LETRA_EXTRANJERO','MESA','MUNICIPIO_CERA',
'NIE','NOMBRE_CONSULADO','NOMBRE_MUNICIPIO','NOMBRE_NORMALIZADO','NOMBRE_PAIS_CERA','NOMBRE_PROVINCIA',
'NOMBRE_SIN_NORMALIZAR','NUMERO_ORDEN','NUMERO_VIA','PAIS_CERA','PAIS_NACION','PERIODO','PISO','PORTAL',
'PRIMER_APELLIDO_NORMALIZADO','PRIMER_APELLIDO_SIN_NORMALIZAR','PROVINCIA_CERA','PUERTA','SEGUNDO_APELLIDO_NORMALIZADO',
'SEGUNDO_APELLIDO_SIN_NORMALIZAR', 'SEXO', 'TIPO_IDENTIFICADOR')
Any help will be appreciate. Thanks Regards, Jose Pascual