Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Pour ceux qui cherchent une solution facile pour importer des CSV dans pg.
(Ou un fichier Excel transformé en CSV.)
Voici comment je fais :
DROP TABLE IF EXISTS table_x1 ;
CREATE TABLE table_x1 (bigfield TEXT) -- avec TEMP si on veut
;
copy table_x1 FROM '/home/jasonc/csv_data/data.csv'
WITH
delimiter '!' -- ce caractère ne se trouve pas dans le fichier
;
DROP TABLE IF EXISTS table x_2;
SELECT
split_part(bigfield, ';', 1) AS id,
split_part(bigfield, ';', 2) AS type,
split_part(bigfield, ';', 3)::date AS create_date,
split_part(bigfield, ';', 4)::numeric AS salary
...
into x_2
from x_1
;
DROP table x_1 -- si on veut.
-- Avantages :
-- c'est plus facile de balancer tous le fichier tout entier dans pg
-- plutôt que de gérer le feedback confusionnant retourné par la commande COPY
-- on peut facilement sélectionner les colonnes a envoyer dans x_2, et ignorer d'autres
----
Autre variante :
DROP TABLE IF EXISTS table_x1 ;
CREATE TABLE table_x1 (bigfield TEXT)
;
copy table_x1 FROM '/home/jasonc/csv_data/data.csv'
WITH
delimiter '!' -- ce caractère ne se trouve pas dans le fichier
;
ALTER TABLE x_1
ADD COLUMN id text ,
ADD COLUMN type text
;
Update x_1
set
id = split_part(bigfield, ';', 1) ,
type= split_part(bigfield, ';', 2)
;
Une fois qu'on est certain d'avoir récupéré les colonnes utiles, on pour faire un drop sur la colonne bigfield.
Voilà.
Moi je fais comme ça.
Jason
Hors ligne
Pages : 1