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

#1 24/10/2011 18:23:10

HeazeN
Membre

Commande COPY

Bonjour, j'ai une question concernant la commande COPY.

Si je veux copier seulement 2 colonne d'un fichier CSV qui en contient 6 vers une table ne contenant que 2 colonne est-ce possible ? Ou dois-je faire une table de 6 colonne, importer le tout, puis supprimer les 4 colonnes qui ne m'intéressent pas ?

Car avec le FORCE NOT NULL il est précisé "Si une liste de colonnes est précisée, COPY ne copie que les données des colonnes spécifiées vers ou depuis le fichier. COPY FROM insère les valeurs par défaut des colonnes qui ne sont pas précisées dans la liste."

Donc moi je comprend que "COPY .... from .... delimiter ';' csv force not null nomcol1dufichier, nomcol2dufichier;" devrait fonctionner mais pas du tout, on doit spécifié 2 colonne de la table et non du fichier, donc pourquoi le "depuis le fichier" dans la phrase ci-dessus.

Voila, merci de votre aide.

Hors ligne

#2 24/10/2011 18:32:54

gleu
Administrateur

Re : Commande COPY

La documentation parle des colonnes de la table, pas du fichier. COPY importe (ou exporte) tout le fichier. Donc il vous faut importer tout dans une table temporaire et ne conserver que les colonnes qui vous intéressent. Vous pouvez aussi utiliser un outil comme pgloader qui saura ne prendre que quelques colonnes d'un fichier.


Guillaume.

Hors ligne

#3 24/10/2011 18:52:51

HeazeN
Membre

Re : Commande COPY

Merci de cette réponse rapide, j'ai bien compris smile

Hors ligne

#4 24/10/2011 21:53:58

HeazeN
Membre

Re : Commande COPY

Désolé j'ai encore une petite question, idiote ... mais dans mon copy je veux indiquer un fichier contenue dans le répertoire courant, donc "Copy talbe from './fichier' mais "./" ne fonctionne pas, je suis obligé de mettre le chemin complet, et il faut surtout pas que je mette cela. Quelle est la bonne syntaxe ?

Hors ligne

#5 24/10/2011 22:00:26

HeazeN
Membre

Re : Commande COPY

Bon ba c'est bien précisé "chemin absolu" donc je pense que sa n'est pas possible, ce qui est bien embêtant.

Hors ligne

#6 24/10/2011 22:47:40

gleu
Administrateur

Re : Commande COPY

Si vous l'exécutez à partir de psql, vous devriez regarder \copy. C'est une métacommande de psql assez intéressante.


Guillaume.

Hors ligne

Pied de page des forums