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

SQL Oracle Discussion :

Importer une BDD de POSTGRESQL à ORACLE


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Par défaut Importer une BDD de POSTGRESQL à ORACLE
    Bonjour,

    Donc voila, je vous explique mon problème :

    donc voila pour la réalisation d'un projet à 2 semaines de la fin le tuteur du projet me demande de passer de postgresql à oracle, et donc voila en ayant jamais touché à oracle je découvre.

    Et voila dans ma création de table j'ai un type INTERVAL de postgresql qui donne le résultat en jour.

    Donc voila j'aimerai savoir comment le mettre dans oracle car il me dit qu'il n'accepte pas le type INTERVAL. J'ai pu lire sur les tuto que on pouvait mettre INTERVAL DAY... Peut on me dire comment ca fonctionne dans la création de table.

    Ensuite j'ai aussi des boolean, j'ai pu lire que oracle l'accépté et moi il me le prend pas, avez une explication à ca?

    Enfin (je l'espère) j'ai des séquences qui sont en fait des nextval, des auto incrément en gros...Comment les déclaré dans la création de table.

    En esperant avoir été clair et précis. Je vous souhaite une bonne journée et merci d'avance pour les réponses à venir.

    Cordialement,

    Malonix

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous avez de la chance, PostgreSQL et Oracle sont relativement proches en terme de syntaxe.

    1) Concernant les intervales, le type existe bel et bien dans Oracle mais il lui faut un "champ de précision" (je mets le terme entre guillement car il y a probablement plus clair).
    Ces deux champs de précision les plus courants sont DAY TO SECOND,
    et YEAR TO MONTH.
    Notez que chacune de ces bornes a elle aussi une précision.
    Si votre intervale va dépasser 1000 jours, il faut précisier DAY(4) TO SECOND.
    Avec quelques recherches vous pourrez trouver ce qui vous siéra le mieux.

    2) Oracle ne supporte pas le type booléen.
    Le sujet discuté chez Tom Kytes : http://asktom.oracle.com/pls/asktom/...:6263249199595
    Il préconise d'utiliser un char(1) avec une contraine de valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    flag char(1) check (flag in ('Y', 'N'))
    3) Les séquences existent, mais si vous désirez un auto-incrément il vous faudra utiliser un trigger sur votre table, par exemple ici un trigger qui remplace un null par la séquence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR REPLACE TRIGGER MyTrigger
      BEFORE INSERT ON MyTable FOR EACH ROW
    BEGIN
      IF :new.MyTableID IS NULL THEN
       SELECT MyTrigger.NEXTVAL INTO :new.MyTableID FROM DUAL;
      END IF;
    END;
    /

  3. #3
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    C'est marrant comme sujet, généralement on migre plutôt d'Oracle vers Postgresql pour des questions de coûts de licence

    Sinon effectivement l'intérêt de Postgresql est de générer des dumps quasiment 100% standard SQL donc avec très peu de syntaxes spécifiques à Postgresql

    Il faut faire un pg_dump de ta base avec Postgresql avec l'option pour générer les données en "insert" (et non pas en COPY), ensuite il faut adapter le script SQL à la main pour les quelques différences de syntaxe, les formats des dates, les types de données, etc ...

    Au final tu n'as plus qu'à lancer le script SQL sur ta base Oracle


    Les principales différences sont au niveau de certains types de données (timestamp/date, bytea qui devient BLOB ou CLOB, ...), des rôles/utilisateurs dont la syntaxe de création change, des tablespaces pour lesquels il faut associer des datafiles sur Oracle (alors que sur Postgresql, on lui associe juste un répertoire), ...
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

Discussions similaires

  1. Importer une bdd [débutant]
    Par BiBloOo dans le forum Visio
    Réponses: 3
    Dernier message: 28/05/2008, 13h54
  2. importer une BDD MySQL vers SQL Server 2005
    Par Ajite dans le forum Outils
    Réponses: 3
    Dernier message: 08/10/2007, 18h06
  3. [SQL server 2005]importer une BDD de Mysql vers SQL server
    Par Fadaflux dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 28/06/2007, 11h56
  4. Importer une BDD de MySQL à Sql serveur 2005 ?
    Par housni dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/06/2007, 19h06
  5. importer une BDD (OSVDB)
    Par Mickael Scofild dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 14/05/2007, 09h02

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