Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

[SOLUCIONADO] Problema COPY para importar CSV

Estas en el tema de Problema COPY para importar CSV en el foro de PostgreSQL en Foros del Web. Hola a todos. Tengo una tabla con la siguiente estructura: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE TABLE pedido (   id_cliente INTEGER NOT NULL ...
  #1 (permalink)  
Antiguo 09/11/2014, 05:14
Avatar de Pantera80  
Fecha de Ingreso: noviembre-2014
Ubicación: España
Mensajes: 35
Antigüedad: 10 años
Puntos: 6
Problema COPY para importar CSV

Hola a todos. Tengo una tabla con la siguiente estructura:

Código SQL:
Ver original
  1. CREATE TABLE pedido
  2. (
  3.   id_cliente INTEGER NOT NULL,
  4.   id_empleado INTEGER NOT NULL,
  5.   id_ruta INTEGER NOT NULL,
  6.   fecha_servicio DATE NOT NULL,
  7.   total_importe money NOT NULL,
  8.   id_pedido serial NOT NULL,
  9.   CONSTRAINT pedido_pkey PRIMARY KEY (id_pedido)
  10. )

Ahora lo que intento es actualizarla desde un archivo CSV con la siguiente sentencia:
Código SQL:
Ver original
  1. copy pedido FROM 'C:\\CSV\\PEDIDO\\PEDIDO.csv' DELIMITER AS ';' NULL AS '' CSV HEADER

pero me devuelve el siguiente error:
Código BASH:
Ver original
  1. ERROR:  datos extra después de la última columna esperada
  2. CONTEXT:  COPY pedido, línea 2: «11;1;2;2/1/2015;82.76400000000001;;»
  3.  
  4. ********** Error **********
  5.  
  6. ERROR: datos extra después de la última columna esperada
  7. SQL state: 22P04
  8. Context: COPY pedido, línea 2: «11;1;2;2/1/2015;82.76400000000001;;»

El archivo pedido.csv es así:

Código BASH:
Ver original
  1. id_cliente;id_empleado;id_ruta;fecha_servicio;total_importe;id_pedido;
  2. 11;1;2;2/1/2015;82.76400000000001;;
  3. 6;1;1;2/1/2015;1113.2;;


Gracias de antemano

Última edición por gnzsoloyo; 09/11/2014 a las 07:08
  #2 (permalink)  
Antiguo 09/11/2014, 07:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema COPY para importar CSV

Si no me equivoco, el problema es que a tu tabla le falta una columna, o tu fuente de datos está creando mal el archivo....
Normalmente todos los DBMS esperan que el formato de datos que llega en un CSV respete este esquema:
Cita:
columna1;columna2:columna3;columna4;...;columnaN
dato1;dato2;dato3;dato4;...;datoN
Si te fijas con atención verás que por cada separador, se espera que haya un dato posterior al mismo, pero que no haya ningun separador al cierre. Y esto incluye el encabezado.

Si miras el CSV que nos muestras y cuentas cuantos datos debería haber, notarás que luego del serial hay dos separadores, lo que implica que hay o debería haber dos columnas de datos... y la tabla sólo espera una.
Asi que o le agregas una columna a la tabla, o verificas la fuente de datos para ver por qué está agregando ese último separador.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/11/2014, 10:47
Avatar de Pantera80  
Fecha de Ingreso: noviembre-2014
Ubicación: España
Mensajes: 35
Antigüedad: 10 años
Puntos: 6
Respuesta: Problema COPY para importar CSV

Muchas gracias por la respuesta y por la rapidez!!

Efectivamente, me sobraba el punto y coma final en cada línea.
Este archivo CSV lo creaba yo a partir de una aplicación Java, ahora ya me funciona

Etiquetas: columna, copy, csv, estructura, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:27.