Cargar desde un CSV
Publicado por Daniel (1 intervención) el 16/12/2020 21:09:15
Hola Amigos,
Llevo peleando con esto un par de dias y no se como masticarlo, os pongo en situacion, esta son las tablas en cuestion:
Tengo creado un tipo llamado direccion y una tabla personas que usa esa relacion.
Para insertar datos mediante la clausula INSERT esta todo perfecto y claro. El problema viene cuando intento ingresar los datos desde un archivo CSV, mi archivo CSV tiene el siguiente formato:
Pongo el encabexado para que veais las columnas, pero en mi archivo clientes.csv no existe.
he intentado insertar los datos asi:
Pero en todos los caso me salta error.
Si no uso un tipo compuesto como dir, o sea los campos individuales en la tabla funciona perfecto, pero con el campo compuesto no encuentro la manera de hacerlo.
Alguien podría darme algo de luz?
Desde ya muchas Gracias
Llevo peleando con esto un par de dias y no se como masticarlo, os pongo en situacion, esta son las tablas en cuestion:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE TYPE direccion AS (
calle varchar(50),
nro varchar(5),
bloque char(1),
letra char(1),
piso varchar(15),
puerta varchar(3),
cp varchar(6),
ciudad varchar(50),
prov varchar(50),
pais char(2)
);
CREATE TABLE personas(
id SERIAL,
dni VARCHAR(12),
nombres VARCHAR(50),
apellidos VARCHAR(50),
telefono VARCHAR(12),
mail varchar(150),
dir direccion
);
Tengo creado un tipo llamado direccion y una tabla personas que usa esa relacion.
Para insertar datos mediante la clausula INSERT esta todo perfecto y claro. El problema viene cuando intento ingresar los datos desde un archivo CSV, mi archivo CSV tiene el siguiente formato:
1
2
3
4
5
6
7
8
9
10
DNI,NOMBRE,APELLIDO,TEELEFONO,MAIL,CALLE,NRO,PISO,PUERTA,CIUDAD,PROVINCIA,PAIS
47795458D,CATERINA,ABRIL PALMA,639464078,,CALLE SET,21, BAJO,,CORBERA DE LLOBREGAT,BARCELONA,ES
49895133Z,NISAR,AHMED RAJA,606280948,,CALLE JACINT VERDAGUER,48, BAJO,,SANT JOAN DESPI,BARCELONA,ES
41093191B,JUAN,AIXALA BRUNA,664573553,,CALLE MIGJORN,91, BAJO,,VALLIRANA,BARCELONA,ES
25443506D,MERCEDES,ALBAREDA NAGUILA,696113300,,CALLE ARAGO,199,2,2,BARCELONA,BARCELONA,ES
46224778E,ANTONIO,ALMIRALL LLOPART,609476634,,CALLE TORREBLANCA,10, BAJO,2,SANT JOAN DESPI,BARCELONA,ES
52363749V,ANGELES,ALONSO-MISOL GERLACHE,610438379,,CALLE CASANOVA,110,3,1,BARCELONA,BARCELONA,ES
37794545W,SOLEDAD,AMEZCUA VILLA,655857934,,CALLE TARRAGONA,22, BAJO,,PALLEJA,BARCELONA,ES
46562593J,CARLES ANDRES,ANDRES OLLE,610758714,,CALLE SEPULVEDA,46,4,4,BARCELONA,BARCELONA,ES
he intentado insertar los datos asi:
1
2
3
4
5
6
7
8
Prueba 1:
COPY cliente(dni, nombres, apellidos, telefono, mail, dir.calle, dir.nro, dir.piso, dir.puerta, dir.ciudad, dir.prov, dir.pais) FROM '/home/datos/personas.csv' DELIMITER ',';
Prueba 2:
COPY cliente(dni, nombres, apellidos, telefono, mail, (dir).calle, (dir).nro, (dir).piso, (dir).puerta, (dir).ciudad, (dir).prov, (dir).pais) FROM '/home/datos/personas.csv' DELIMITER ',';
Prueba 3:
COPY cliente(dni, nombres, apellidos, telefono, mail, row(calle, nro, piso, puerta, ciudad, prov, pais)) FROM '/home/datos/personas.csv' DELIMITER ',';
Pero en todos los caso me salta error.
Si no uso un tipo compuesto como dir, o sea los campos individuales en la tabla funciona perfecto, pero con el campo compuesto no encuentro la manera de hacerlo.
Alguien podría darme algo de luz?
Desde ya muchas Gracias
Valora esta pregunta


0