PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 08/11/2016 16:16:21

albourg
Membre

migration ora2pg import_all.sh

Bonjour,

je suis en train d'essayer de migrer une petite db oracle, un seul schéma SCH.

L'export est bien passé (export_schema.sh sans erreur).
En postgres, j'ai une db nommée abotest, un user abo et un password. Je ne sais pas ce que je dois mettre comme owner.
./import_all.sh -U abo -h 127.0.0.1 -d abotest -o SCH
Password for user abo:
psql: FATAL:  database "abo" does not exist
Would you like to create the owner of the database SCH? [y/N/q]

Je ne comprends pas le message "database "abo" does not exist". -U abo spécifie l'utilisateur, la db est spécifiée par -d et doit être "abotest".
Que veut-il dire par "le propriétaire de la database SCH"?  Le schéma SCH?
si je lui dis "oui", il le crée: createuser -h 127.0.0.1 -U abo --no-superuser --no-createrole --no-createdb SCH
MAIS ensuite il me demande "Would you like to create the database abotest". Pq ? Elle existe, je dois d'ailleurs chaque fois taper le mot de passe pour m'y connecter.

De plus, si je lance avec -Y pour ne pas confirmer chaque message, il se plaint qu'il ne peut créer la db (qui existe déjà) et s'arrête.
Pourriez-vous m'expliquer?

Merci.

Hors ligne

#2 13/11/2016 18:08:43

gleu
Administrateur

Re : migration ora2pg import_all.sh

Je ne comprends pas le message "database "abo" does not exist". -U abo spécifie l'utilisateur, la db est spécifiée par -d et doit être "abotest".

Le script essaie de vérifier si l'utilisateur sch existe (pour le créer le cas échéant) et pour cela, il utilise psql avec l'option "-U abo" (pour se connecter en tant qu'utilisateur abo). Ça paraît tout à fait logique en considérant les arguments que vous avez donné. Par contre, le script oublie d'indiquer le nom de la base où s connecter pour faire cette vérification. Dans ce cas, psql utilise le nom de l'utilisateur de connexion (abo) aussi comme nom de base de données pour la connexion. Or elle n'existe pas, ce qui provoque l'affichage du message d'erreur. Pour moi, c'est un bug. Je l'ai déclaré ici : https://github.com/darold/ora2pg/issues/236

Que veut-il dire par "le propriétaire de la database SCH"?  Le schéma SCH?

L'option -o permet d'indiquer quel utilisateur sera le propriétaire de la base de données.

MAIS ensuite il me demande "Would you like to create the database abotest". Pq ?

À mon sens, c'est la suite du problème précédent.

Elle existe, je dois d'ailleurs chaque fois taper le mot de passe pour m'y connecter.

Pour ne pas avoir à saisir votre mot de passe à chaque fois, vous devez utiliser soit la variable d'environnement PGPASSWORD, soit le fichier .pgpass, comme pour tout autre outil PostgreSQL.


Guillaume.

Hors ligne

#3 13/11/2016 21:13:55

gilles
Membre

Re : migration ora2pg import_all.sh

Le owner de la base de destination doit être défini avec l'option -o, la connexion en user postgres évitera l'erreur rencontrée. Si l'option -U est utilisée pour se connecter alors la base par défaut de ce user doit exister car il n'y a pas d'option pour changer la base de connexion.

Si en tant qu'utilisateur postgres vous exécuter la commande suivante :

    ./import_all.sh -h 127.0.0.1 -d abotest -o abo

cela créera la base abotest avec le propriétaire abo pour importer les objets et données dans cette base. Si vous voulez utiliser un schéma dédié pour la création des objets il vous faudra utiliser l'option -n, par exemple :

    ./import_all.sh -h 127.0.0.1 -d abotest -o abo -n SCH


tous les objet seront créés dans le schéma SCH de la base abotest dont le propriétaire sera l'utilisateur abo. Si vous ne souhaitez pas créer un schéma spécial pour l'import des objets ou que cela a déjà été fait lors de l'export, il ne faut pas ajouter cette option.

Cordialement,

Hors ligne

Pied de page des forums