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

Import/Export Oracle Discussion :

Export : génération d'un script d'insertion avec une colonne BLOB, puis insertion dans une autre BDD


Sujet :

Import/Export Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2023
    Messages : 21
    Points : 8
    Points
    8
    Par défaut Export : génération d'un script d'insertion avec une colonne BLOB, puis insertion dans une autre BDD
    Bonjour,

    J'ai généré un script d'insertion dans une table, et j'ai besoin de l'insérer ces données dans la table d'une autre BDD.

    Je génère le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Insert into MA_TABLE  (COL_1,IMG) values (152, TO_BLOB(HEXTORAW('626567696E2030207575656E636F64652E6275660D0A6C4F55212E3150542A264048202020202D3234412434402020204738'))
    || TO_BLOB(HEXTORAW('202020254522203820202021465F4A35312020202020372D32315428204B4C583C5A3020202020314730345521202022510D'))
    || TO_BLOB(HEXTORAW('0A6C4F504F5C38303420202020293C2441393C502020234C2C2020205B23203C3D4F4F563020202020413D2435383D242D52'))
    || TO_BLOB(...
    plus de 500 lignes
    || TO_BLOB(HEXTORAW('5C2131475F20595F293F5F5028200D0A2F202020203234352E312A5922382B5C200D0A0A656E64')));
    Je tente ensuite de lancer le script d'insertion dans l'autre BDD, mais l'insertion n'aboutit pas et j'ai le message d'erreur :

    Rapport d'erreur -
    ORA-01489: résultat de concaténation de chaîne trop long


    En fait, SQL Developer génère un script d'insertion, qu'il n'accepte pas !

    Une solution pour résoudre ce problème ?

    D'avance, merci pour votre aide

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Quels sont les types de données des colonnes des tables source et destination ?

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Soit vous générez un script PL/SQL au lieu de SQL pour éviter la limitation de la taille des constantes VARCHAR2,
    soit vous exportez vos BLOB dans des fichiers et vous les importer avec SQLLoader,
    soit vous le faites avec datapump,
    si vos 2 DBs sont en fait 2 schemas dans la même instance, donnez les bons droits et faites le en direct avec un INSERT/UPDATE/MERGE,
    ...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2023
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Quels sont les types de données des colonnes des tables source et destination ?
    Pour les deux tables source et destination :
    Il s'agit deux BDD d'environnements différents, donc la même table pour les deux.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2023
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    Soit vous générez un script PL/SQL au lieu de SQL pour éviter la limitation de la taille des constantes VARCHAR2,
    soit vous exportez vos BLOB dans des fichiers et vous les importer avec SQLLoader,
    soit vous le faites avec datapump,
    si vos 2 DBs sont en fait 2 schemas dans la même instance, donnez les bons droits et faites le en direct avec un INSERT/UPDATE/MERGE,
    ...
    Je pense que la meilleure solution est la première, un script PL/SQL. Peut-on générer le script PL/SQL avec SQL Developer tout comme pour le script SQL ?
    J'essaie, mais rien ne me dit de générer en PL/SQL !

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par langar1250 Voir le message
    Je pense que la meilleure solution est la première, un script PL/SQL. Peut-on générer le script PL/SQL avec SQL Developer tout comme pour le script SQL ?
    J'essaie, mais rien ne me dit de générer en PL/SQL !
    Non, vous devez faire vous même le "template" et ensuite l'utiliser pour chaque BLOB dans votre script de génération :
    création d'un BLOB vide, concaténation par chunk des morceaux du BLOB original et insertion dans la table

    https://stackoverflow.com/questions/...imported-again

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Le plus simple c'est peut être de créer un dblink entre les 2 bases et de faire un INSERT INTO SELECT pour charger la table destination.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2023
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Le plus simple c'est peut être de créer un dblink entre les 2 bases et de faire un INSERT INTO SELECT pour charger la table destination.
    Merci, je pense que c'est une très bonne solution, je suis en train de voir comment procéder

Discussions similaires

  1. [10g] Outil de génération de script d'insert dans une BD
    Par SI_BDD dans le forum SQL
    Réponses: 3
    Dernier message: 21/04/2013, 14h52
  2. insert avec une colonne identity
    Par neufgirl dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 19/02/2009, 11h54
  3. Pb d'insertion avec une colonne DATE
    Par FDR2006 dans le forum Firebird
    Réponses: 6
    Dernier message: 03/12/2007, 13h31
  4. export -> excel avec insertion d'une colonne vide
    Par Gary_Stoupy dans le forum Access
    Réponses: 5
    Dernier message: 16/01/2007, 11h11
  5. INTERBASE 5.5 insertion dans une colonne BLOB
    Par mariustrezor dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/10/2004, 18h06

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