Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 30/11/2015 13:41:00
- Jason Chambers
- Membre
Importer un fichier CSV dans un table Postgresql
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