2012-03-30 34 views
8

Inicialmente le pregunté esto al Superusuario, pero alguien me recomendó que volviera a publicar aquí.importando datos CSV en Oracle (probando Apex/SQL Developer)

Estoy usando versiones recientes de APEX (4.1.1) y Oracle (11.2.0.3).

Estoy cargando datos CSV a un conjunto de tablas. Lo he estado probando y estoy encontrando algunos problemas que no he visto antes.

Como ejemplo, he tratado de importar datos de esta tabla:

CREATE TABLE SW_ENGINEER 
    (ENGINEER_NO VARCHAR2(10), 
      ENGINEER_NAME VARCHAR2(50), 
      CONSTRAINT SW_ENG_PK PRIMARY KEY (ENGINEER_NO)) 

Se produce un error en este simplificada subconjunto de datos:

call log no,contract_no,call date,agreed date,agreed time,actual arrive,engineer no,engineer name,equipment code,cust desc,eng desc 
a,b,c,22-Mar-06,1,23/03/2006 15:00,654,Flynn Hobbs,d,e,f 
a,b,c,22-Mar-06,2,23/03/2006 15:00,654,Flynn Hobbs,d,e,f 
a,b,c,19-Mar-06,3,19/03/2006 09:15,351,Rory Juarez,d,e,f 

(falla de la misma manera en un conjunto de datos más grande) no puedo cargarlo, ya sea con APEX o SQL Developer, de la siguiente manera:

  • APEX: con APEX trabajo de datos comprar, importar texto, cargar tablas existentes, usar comas separadas, seleccionar la tabla y el archivo, marcar la casilla de verificación para "fila de encabezado", y tenemos el formulario de mapeo de columnas que muestra los datos correctos. A continuación, configure todas las columnas excepto engineer_no y engineer_name como 'No' y haga clic en Cargar datos.

Esto parece funcionar, y muestra una fila de resumen en el Repositorio de carga de datos de texto, pero en la inspección ha cargado 0 filas y 79 ha fallado. Al hacer clic en el 79 se muestra que todos sufrieron de "ORA-01008: no todas las variables vinculadas". Las columnas seleccionadas se ven bien para mí, así que me pregunto si todavía incluye algunas de las otras a pesar de la configuración 'No'.

El problema no ocurre si edito el csv para eliminar las columnas irrelevantes antes de cargarlo, pero sería mucho más fácil si pudiera usar el mapeo de columnas.

  • SQL Developer: Usando el asistente de importación de datos en SD, me parece que no va a progresar a la asignación de columna a no ser que se comprueba fila de cabecera (? El botón está habilitado pero no funciona - por qué no), - pero si está marcado (correctamente en este caso), entonces el paso Verificar falla porque "Columna de tabla Engineer_no no es lo suficientemente grande ...".

Encontré que se puede solucionar eliminando los valores de encabezado de las columnas del archivo csv. Por lo tanto, parece que establecer la casilla de verificación Encabezado de encabezado no hace que ignore la fila de encabezado, y es el valor del encabezado 'ingeniero-no' el que está causando el error. Lo cual no me parece correcto. He utilizado ambos enfoques sin problemas en el pasado, y me pregunto si la actualización reciente tiene algo que ver con esto.

¿Alguna idea? ¿O me estoy perdiendo algo obvio?

+1

¿Alguno de los campos en el archivo csv tiene un ',' en ellos? – MatBailie

+0

sí, pero luego se citan "como este" – boisvert

+1

¿Ha probado un simple 1 o 2 líneas csv sin tales campos. Y otra línea de 1 o 2 csv con tales campos? Si la primera falla, usted tiene un problema mayor. Si la primera tiene éxito y la segunda falla, ha aislado el problema. Si ambos tienen éxito hay alguna otra peculiaridad en sus datos en alguna parte. Analícela en Excel o algo. – MatBailie

Respuesta

2

Un colega mío encuentra esta solución (no totalmente satisfactoria):

si las columnas que se requieren son tanto al principio, funciona, como esto:

engineer no,engineer name,equipment code,cust desc,eng desc,call log no,contract_no,call date,agreed date,agreed time,actual arrive 
654,Flynn Hobbs,d,e,f,a,b,c,22-Mar-06,1,23/03/2006 15:00 
654,Flynn Hobbs,d,e,f,a,b,c,22-Mar-06,2,23/03/2006 15:00 
351,Rory Juarez,d,e,f,a,b,c,19-Mar-06,3,19/03/2006 09:15 

Así que parece que una ¿El error con YES/NO incluye funcionalidad en la importación de texto APEX?

0

En CSV

call log no,contract_no,call date,agreed date,agreed time,actual arrive,engineer no,engineer name,equipment code,cust desc,eng desc 
a,b,c,22-Mar-06,1,23/03/2006 15:00,654,Flynn Hobbs,d,e,f 
a,b,c,22-Mar-06,2,23/03/2006 15:00,654,Flynn Hobbs,d,e,f 
a,b,c,19-Mar-06,3,19/03/2006 09:15,351,Rory Juarez,d,e,f 

Usted tiene 11 columnas y se intenta importarlo en 3 columnas.

  1. Si usted tiene "en CSV que deberían poner eliminarlos todos.
  2. Usted necesita tener exactamente 11 columna de la tabla para este CSV.
  3. Cada columna de la tabla podría tener el tipo de datos correcto.
  4. cada, en CSV es un separador de columna.
0

no estoy seguro de por qué no funcionó para usted. trabajó muy bien para mí, con el taller de datos Apex con copiar y pegar. (Versión 5.0.4)

Por supuesto, solo pude cargar dos de esos tres resultados, uno de ellos tenía un valor de ID duplicado. Pero funcionó.

PD: Para el conjunto de datos más grande donde puede tener ',' como parte del valor de columna para una fila, considere usar la opción "Opcionalmente encerrado por" configurándolos con comillas dobles (") durante el asistente de subida. Trata el valor completo como un valor.

Cuestiones relacionadas