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

#1 31/03/2017 11:21:33

fredqa
Membre

pb syntaxe psql copy from stdin

Bonjour,

après pas mal de recherche, je me permets de poster cette question.
Je souhaite réaliser une copie de table entre une base locale et une base distante. J'ai trouvé un code sur un autre forum, que j'ai adapté et qui fonctionne en partie pour réaliser cette tâche.


C:\Program Files (x86)\PostgreSQL\9.3\bin>
psql -h localhost -p 5432 -U postgres -d mabase_locale -c "copy schema1.matable to stdout"
|
psql -h xx.xxx.x.xx -p 5432 -U moi_sur_serveur -d mabase_sur_serveur -c "\copy schema2.matable from stdin"


La première partie du code, avant le symbole pipe semble fonctionner correctement.
La deuxième partie du code ne fonctionne pas, avec le message d'erreur suivant :
relation "schema2.matable" does not exist
n'a pas pu écrire les données du COPY : invalid argument

J'ai cherché dans la doc de COPY, mais comme je suis novice, je n'arrive pas à voir le problème de syntaxe.
Avez vous des préconisations ou conseils sur ce sujet ?
en vous remerciant par avance
Bien cordialement,
Fred

Hors ligne

#2 31/03/2017 15:08:34

jmarsac
Membre

Re : pb syntaxe psql copy from stdin

Bonjour,
Le message me semble clair : la table schema2.matable n'existe pas sur le serveur distant

Hors ligne

#3 31/03/2017 15:54:41

fredqa
Membre

Re : pb syntaxe psql copy from stdin

Bonjour,

oui effectivement le message est clair !
je cherche à la créer cette table, avec ce que je viens de copier dans stdout avec la première partie du code.

le schéma2 existe! et je souhaite créer matable dans ce schéma2 avec ce qui vient d'être copié dans stdout.

Il me faut, je pense, écrire que schéma2 est une constante, j'ai essayé ceci :

C:\Program Files (x86)\PostgreSQL\9.3\bin>
psql -h localhost -p 5432 -U postgres -d mabase_locale -c "copy schema1.matable to stdout"
|
psql -h xx.xxx.x.xx -p 5432 -U moi_sur_serveur -d mabase_sur_serveur -c "\copy $ schema2 $.matable from stdin"

qui me donne un autre message d'erreur :
\copy : erreur d'analyse sur " schema2 "

?
Fred

Hors ligne

#4 31/03/2017 19:12:48

Arkhena
Membre

Re : pb syntaxe psql copy from stdin

Bonjour,

Copy vous permet de gérer les données pas les structures. Créez votre table d'abord.
(Assurez-vous également que le search_path comporte bien le schéma.)

Cordialement,

Arkhena

Hors ligne

#5 03/04/2017 10:25:11

fredqa
Membre

Re : pb syntaxe psql copy from stdin

bonjour,

ok, j'ai créer la table de destination, puis réalisé le copy. Cela fonctionne. merci.

Cordialement,
Fred

Hors ligne

Pied de page des forums