IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Can't call method "do" Ora2Pg.pm [9.4]


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Can't call method "do" Ora2Pg.pm
    Bonjour,

    Je fais des test de migration de base Oracle vers PostgreSQL et j'utilise l'outil Ora2Pg pour ça.
    J'arrive à exporter ma base Oracle puis à l'aide de la commande psql ma_base<output.sql à importer mes tables sur ma base PostgreSQL.
    Ce que je voudrais maintenant faire, c'est transférer directement de Oracle vers PostgreSQL sans passer par l'étape psql ma_base<output.sql.
    Si j'ai bien compris, Ora2Pg peut le faire, il suffit pour cela de rentrer le PG_DNS, PG_USER et PG_PWD dans le fichier ora2pg.conf.

    Je l'ai fait, j'ai relancé Ora2Pg et voici l'erreur qu'il m'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Can't call method "do" on an undefined value at /usr/local/share/perl/5.20.2/Ora2Pg.pm line 4527.
    Issuing rollback() due to DESTROY without explicit disconnect() of DBD::Oracle::db handle INDICATEURS at /usr/local/share/perl/5.20.2/Ora2Pg.pm line 4527.
    En sachant que:
    - Ora2Pg est installé sur la machine possédant PostgreSQL.
    - Sur cette machine j'ai installé DBI, DBD::Oracle, DBD:g via CPAN, Instant_Client_Oracle_basic, devel, sqlplus.
    - INDICATEURS est le SID de la base à migrer, renseigné dans le tnsname.ora
    - Oracle est installé ailleurs, mais je rappel que lorsque les données Postgres ne sont pas renseigné, la migration fonctionne...

    Une idée ? =)

    Voici la ligne 4527 de Ora2Pg.pm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $self->{dbhdest}->do("BEGIN;") or $self->logit("FATAL: " . $self->{dbhdest}->errstr . "\n", 0, 1);
    Merci et bonne journée.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Je pense avoir compris! (Comme quoi, poster sur un forum ça aide, ça fait 2 jours que je cherche une réponse et maintenant que j'ai posté j'en trouve une... )

    Semblerait-il que Ora2Pg n'accepte pas de transférer les tables directement...
    Je m'explique:

    Pour un cas simple, dans le fichier ora2pg.conf on renseigne comme TYPE: TABLE INSERT (ou COPY).
    Soit: les tables vides (TABLE) puis les lignes (INSERT ou COPY).

    Ora2Pg ne permet pas de transférer les tables vides en direct, il faut:
    - Faire un premier export avec comme TYPE TABLE
    - Importer tes tables vides avec psql ma_base<output.sql
    - Puis maintenant on peut faire un export TYPE INSERT (ou COPY) en renseignant les paramètres PostgreSQL et il va directement copier les lignes des tables Oracle dans les tables PostgreSQL.

    Étonnant que Ora2Pg n'accepte pas de transférer les tables mais bon... il doit y avoir une explication technique que je ne saisis pas...

    Sur ce, bonne journée et merci quand même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 21/03/2007, 20h09
  2. Réponses: 1
    Dernier message: 17/01/2007, 17h10
  3. Can't call method "mail" on an undefined value
    Par hpalpha dans le forum Modules
    Réponses: 2
    Dernier message: 18/01/2006, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo