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

#1 09/07/2010 17:05:53

sylvinhio
Membre

COPY et création de fichier

Bonjour,

Je souhaite utiliser la fonction COPY pour charger massivement une table.
Mon problème est que mes données viennent de mon client (application).

Des INSERT multiples sont inimaginables (trop lent !).
Je souhaite donc faire un COPY à partir d'un fichier, mais ce dernier doit impérativement se situer sur le serveur (qui n'a pas de visibilité sur mon application client).

Donc le seul moyen est de créer ce fichier depuis le serveur.
Est-il possible de créer un fichier texte avec une librairie PostgreSQL ?

Merci pour votre aide

Cordialement,

Hors ligne

#2 09/07/2010 17:21:58

Marc Cousin
Membre

Re : COPY et création de fichier

Cela n'est pas nécessaire : COPY FROM fichier impose effectivement que le fichier soit sur le serveur

Ce n'est pas nécessaire avec COPY FROM STDIN, qui fonctionne sur le réseau

Mieux encore, si vous utilisez psql, vous pouvez utiliser sa commande interne \copy, qui maquillera COPY FROM STDIN pour qu'il lise un fichier local à la machine exécutant psql
Regardez la syntaxe de \copy dans la documentation officielle :
http://docs.postgresql.fr/8.4/app-psql.html


Marc.

Hors ligne

#3 09/07/2010 17:26:02

sylvinhio
Membre

Re : COPY et création de fichier

Donc je peux utiliser COPY maTable FROM STDIN monFichier ?

Hors ligne

#4 09/07/2010 17:32:40

Marc Cousin
Membre

Re : COPY et création de fichier

non, stdin veut dire 'entrée standard'. Ce n'est donc pas un fichier

Ça veut dire que dans psql, vous pouvez faire :
\copy matable FROM monfichier

\copy est une commande interne de psql, qui fait appel à COPY, en lui pasant un fichier local en paramètre. Et donc vous permet je pense de faire ce que vous voulez faire.

Dernière modification par Marc Cousin (09/07/2010 17:33:17)


Marc.

Hors ligne

#5 09/07/2010 17:39:20

sylvinhio
Membre

Re : COPY et création de fichier

Lorsque j'effectue la commande suivante dans PgAdmin, côté client :

COPY maTable FROM monFichier

il me dit bien qu'il ne trouve pas le fichier


Si j'effectue la commande suivante :

\copy maTable FROM monFichier

j'ai une erreur de syntaxe sur le caractère "\"


des idées ?

Hors ligne

#6 09/07/2010 17:55:15

Marc Cousin
Membre

Re : COPY et création de fichier

Oui. Comme je vous l'ai dit, \copy est une commande de psql. Pas de pgadmin.

psql est l'outil en ligne de commande fourni avec PostgreSQL. Il est fait pour ce genre d'opérations.


Marc.

Hors ligne

#7 09/07/2010 18:02:28

sylvinhio
Membre

Re : COPY et création de fichier

ok j'ai réussi !:!!

merci :-)

Hors ligne

Pied de page des forums