Vous n'êtes pas identifié(e).

#1 07/06/2012 15:30:27

karthus
Membre

COPY d'un fichier compressé

Bonjour. Je fais des export/import d'une db très volumineuse donc je crée un fichier gz contenant mon fichier avec les données , je fais l'export avec le spool de sqlplus , mais comment faire l'import avec COPY FROM STDIN?
j'ai beau chercher sur le net je ne trouve pas grand chose. Merci

Hors ligne

#2 07/06/2012 15:37:32

rjuju
Administrateur

Re : COPY d'un fichier compressé

Bonjour,
il s'agit d'une exportation depuis oracle ?
La doc pour le copy se trouve ici : http://docs.postgresqlfr.org/9.1/sql-copy.html


La syntaxe de base est :
COPY table (champ1, champ2 ...) FROM STDIN;
suivi de toutes les lignes. Dans un fichier, il faut arrêter le flux de donnée par une ligne contenant un \.


Si  vous voulez voir un exemple, le plus simple est de faire un dump en mode plain d'une table postgres et voir le fichier généré.

Dernière modification par rjuju (07/06/2012 15:39:19)

Hors ligne

#3 07/06/2012 15:40:29

karthus
Membre

Re : COPY d'un fichier compressé

Je ne pense pas que la doc soit assez précise
J'ai trouvé pour l'export qu'il y a psql -c "COPY foo_table TO stdout DELIMITER ',' CSV HEADER" \
    | gzip > foo_table.csv.gz

il me faudrait l'équivalent mais pour l'import

Hors ligne

#4 07/06/2012 16:53:43

karthus
Membre

Re : COPY d'un fichier compressé

c'est tout bête , en fait il suffisait juste de faire:
gzip -c -d /monfichier.gz | psql -d madb -c " COPY ma_table FROM stdin with delimiter ';' "
je ne sais pas pourquoi sa n'avait pas marché avant

Hors ligne

Pied de page des forums