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

#1 18/07/2011 09:57:28

yo_haha
Membre

Migration WinDev -> Postgresql 8.4

Bonjour,

Je veux faire une migration de données de WinDev vers Postgresql 8.4. Pour cela, j'ai fait un export de la base WinDev vers Excel et après je compte remplir les tables crées dans Postgresql par les données contenues dans les tables Excel. Pourriez-vous m'expliquer comment remplir ces tables ?

Cordialement.

Hors ligne

#2 18/07/2011 11:03:30

gleu
Administrateur

Re : Migration WinDev -> Postgresql 8.4

Il vous faut transformer le fichier excel en plusieurs fichiers CSV (un par table), créer les tables sur une base de données PostgreSQL et injecter les données avec la commande SQL COPY ou avec un outil du type pgloader.


Guillaume.

Hors ligne

#3 19/07/2011 11:12:05

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

Je vous remercie. Pourriez-vous m'indiquer une documentation qui explique comment utiliser pgloader (de l'installation à l'utilisation) ?

Hors ligne

#4 19/07/2011 11:23:17

gleu
Administrateur

Re : Migration WinDev -> Postgresql 8.4

Non, à ma connaissance, il n'existe que la page man (http://pgloader.projects.postgresql.org/).


Guillaume.

Hors ligne

#5 19/07/2011 18:31:09

cedric
Membre

Re : Migration WinDev -> Postgresql 8.4

gleu a écrit :

Non, à ma connaissance, il n'existe que la page man (http://pgloader.projects.postgresql.org/).

Il a aussi le blog de Dimitri (l'auteur) qui a quelques articles, dont un sur la gestion de taille fixe:

http://tapoueh.org/blog/2010/04/27-impo … oader.html


Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation

Hors ligne

#6 21/07/2011 18:08:43

Ducteil
Membre

Re : Migration WinDev -> Postgresql 8.4

Bonjour

J'ai utilisé un autre procédé.

Via WinDev, on peut injecter des données Hyper File sans sortir du pro - logiciel.
Il suffit de créer une connexion supplémentaire en natif (si la base PostgreSQL est accessible).

J'étais confronté au même problème.
J'ai parcouru la base HF en utilisant
+ fListeFichier : pour lister chaque fichier
+ HDéclareExterne pour importer un fichier HF (prenez soin de le fermer avec un HFerme et un HAnnuleDéclaration.
// On est jamais trop prudent
+ HListeRubrique pour l'identification des colonnes.

Puis j'ai créé des requêtes - groupées par 200 -, et les envoyées, via SQLExec pour mettre à jour les données de la base PostgreSQL.

Le tout dans un thread ; pensez à mettre une trace.

Olivier

Hors ligne

#7 22/07/2011 09:54:20

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

Bonjour,

Je vous remercie tous de vos réponses.
J'ai un soucis avec la commande COPY table FROM ...
Le fichier CSV à partir duquel je veux copier les données ne peut pas être ouvert :
ERREUR:  n'a pas pu ouvrir le fichier « //.../communes.csv » pour une lecture : Invalid argument

Avez-vous déjà rencontré cette erreur ?

Cordialement.

Hors ligne

#8 22/07/2011 09:59:31

gleu
Administrateur

Re : Migration WinDev -> Postgresql 8.4

On pourrait avoir la requête exacte ? vous êtes sûr du message d'erreur ? parce que "invalid argument", je n'ai jamais vu ça. Le fichier se trouve bien sur le serveur PostgreSQL ?


Guillaume.

Hors ligne

#9 22/07/2011 12:43:39

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

Requête :
COPY commune FROM '\\\\imhotep\\OIT\\Geologie\\ARCGIS\\Layachi\\postgis\\communes.csv' WITH DELIMITER AS ';'

Erreur :
ATTENTION:  utilisation non standard de \\ dans une chaîne littérale
LINE 1: COPY commune FROM '\\\\imhotep\\OIT\\Geologie\\ARCGIS\\Layac...
                          ^
HINT:  Utilisez la syntaxe de chaîne d'échappement pour les antislashs, c'est-à-dire E'\\'.
ERREUR:  n'a pas pu ouvrir le fichier « \\imhotep\OIT\Geologie\ARCGIS\Layachi\postgis\communes.csv » pour une lecture : Invalid argument

********** Erreur **********

ERREUR: n'a pas pu ouvrir le fichier « \\imhotep\OIT\Geologie\ARCGIS\Layachi\postgis\communes.csv » pour une lecture : Invalid argument
État SQL :XX000


Le fichier n'est pas sur le serveur Postgresql. Dans quel répertoire doit-il être ?

Hors ligne

#10 22/07/2011 13:07:33

gleu
Administrateur

Re : Migration WinDev -> Postgresql 8.4

Remplacez les antislash par des slashs. De plus, le fichier semble être sur un autre poste, ce qui a de fortes chances de ne pas fonctionner. Essayez malgré tout en remplaçant les antislashs par des slashs.


Guillaume.

Hors ligne

#11 22/07/2011 15:24:01

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

J'ai mis le fichier dans la racine du disque C et j'ai exécuté la requête :
COPY commune FROM 'C:/communes.csv' WITH DELIMITER AS ';'

Et j'ai eu l'erreur :
ERREUR:  n'a pas pu ouvrir le fichier « C:/communes.csv » pour une lecture : No such file or directory

********** Erreur **********

ERREUR: n'a pas pu ouvrir le fichier « C:/communes.csv » pour une lecture : No such file or directory
État SQL :58P01

Hors ligne

#12 22/07/2011 15:34:30

gleu
Administrateur

Re : Migration WinDev -> Postgresql 8.4

On est bien d'accord que le fichier se trouve sur le serveur PostgreSQL ? que l'utilisateur postgres a droit de lire ce fichier ?


Guillaume.

Hors ligne

#13 22/07/2011 15:42:04

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

Non, le fichier est sur un poste client du serveur Postgresql. Où est-ce qu'il faut le mettre plus exactement ?

Hors ligne

#14 22/07/2011 15:46:14

gleu
Administrateur

Re : Migration WinDev -> Postgresql 8.4

La commande COPY s'exécute sur le serveur, donc le serveur doit pouvoir y avoir accès. Où vous le mettez à peu d'importance à partir du moment où l'utilisateur postgres du serveur PostgreSQL peut y accéder en lecture.


Guillaume.

Hors ligne

#15 22/07/2011 15:50:06

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

Comment puis-je reconnaître les endroits accessibles par l'utilisateur postgres ?

Dernière modification par yo_haha (22/07/2011 16:01:31)

Hors ligne

#16 22/07/2011 16:02:01

gleu
Administrateur

Re : Migration WinDev -> Postgresql 8.4

Si vous êtes sur du Linux, tout est accessible à condition que le fichier soit en lecture pour l'utilisateur postgres. Sous Windows, ça doit se gérer à peu près de la même façon : dans l'onglet Sécurité du fichier, l'utilisateur postgres doit pouvoir lire le fichier.


Guillaume.

Hors ligne

#17 22/07/2011 16:33:48

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

Je travaille sous windows sur un poste utilisateur qui se connecte à un serveur où Postgresql est installé. J'ai mes propores identifiants pour me connecter. Je suis le propriétaire de la base de donnée en question (pas postgres). On vient de m'accorder les droits de super user pour exécuter la requête copy.
Dans le cas que je viens d'expliciter je ne pense pas que c'est postgres qui doit pouvoir accéder au fichier. Est-ce que je me trompe ?

Hors ligne

#18 22/07/2011 16:58:57

gleu
Administrateur

Re : Migration WinDev -> Postgresql 8.4

Pas besoin d'avoir les droits super utilisateur pour exécuter un COPY. Il faut seulement que l'utilisateur PostgreSQL qui exécute la requête ait le droit d'écrire dans la table et que l'utilisateur Unix postgres ait le droit de lire le fichier. Et, si, c'est l'utilisateur Unix postgres qui doit pouvoir accéder au fichier.


Guillaume.

Hors ligne

#19 22/07/2011 17:05:56

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

Lorsque je n'avais pas les droits de super user, j'avais l'erreur
"doit être super-utilisateur pour utiliser COPY à partir ou vers un fichier"
après l'exécution de
"copy commune from 'Z:/Geologie/ARCGIS/Layachi/postgis/communes.csv' delimiters ';' CSV"

Maintenant que j'ai ces droits j'ai  l'erreur qui dit que le fichier est introuvable.

Hors ligne

#20 22/07/2011 17:13:52

gleu
Administrateur

Re : Migration WinDev -> Postgresql 8.4

Juste une question. Le serveur PostgreSQL se trouve sur un serveur Windows ou sur un serveur Unix ?


Guillaume.

Hors ligne

#21 22/07/2011 17:23:19

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

Je ne sais pas sad

Hors ligne

#22 22/07/2011 17:37:58

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

Y aurait-il une différence ?

Hors ligne

#23 22/07/2011 18:02:07

cedric
Membre

Re : Migration WinDev -> Postgresql 8.4

yo_haha a écrit :

Lorsque je n'avais pas les droits de super user, j'avais l'erreur
"doit être super-utilisateur pour utiliser COPY à partir ou vers un fichier"
après l'exécution de
"copy commune from 'Z:/Geologie/ARCGIS/Layachi/postgis/communes.csv' delimiters ';' CSV"

Maintenant que j'ai ces droits j'ai  l'erreur qui dit que le fichier est introuvable.

je n'ai pas suivi le thread, mais utiliser 'SET standard_conforming_strings TO on;" permet d'utiliser des chemins windows 'sans se prendre la tete'.
Lire la doc pour les implications:

http://docs.postgresqlfr.org/9.0/runtim … ng-strings

http://docs.postgresqlfr.org/9.0/sql-sy … ngs-escape


Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation

Hors ligne

#24 22/07/2011 18:29:54

gleu
Administrateur

Re : Migration WinDev -> Postgresql 8.4

Y aurait-il une différence ?

Oui, vu que le fichier doit se trouver sur le *serveur*. Si vous indiquer C:\..., ça fait certainement référence à votre poste client, ce qui ne marchera pas.


Guillaume.

Hors ligne

#25 26/07/2011 12:46:31

yo_haha
Membre

Re : Migration WinDev -> Postgresql 8.4

La requête suivante ne marche pas

COPY commune FROM '//tesla/copy/communes.csv' WITH DELIMITER AS ';'

//tesla/copy est un répertoire se trouvant sur le serveur où Postgresql est installé.

J'ai toujours la mâme erreur. Auriez-vous une solution ?

Hors ligne

Pied de page des forums