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*Plus Oracle Discussion :

Insertion de données CLOB via un script dans SQL*Plus


Sujet :

Sql*Plus Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Insertion de données CLOB via un script dans SQL*Plus
    Hello,

    Comment préparer un fichier .sql à éxécuter dans SQL*Plus (Oracle 10g) pour pouvoir injecter de grandes quantités de texte dans un champ au format CLOB.

    Après une recherche laborieuse il apparait que je dois employer les bind variables, ce qui fonctionne à peut près sauf dans le cas ou je cherche a conserver les retours à la ligne intact... Autrement dit, lorsque je veut faire ça :

    var var_xml CLOB
    exec :var_xml := '<xml><field>Value</field></xml>'
    INSERT INTO table (id, xml) VALUES (1,:var_xml)

    tout fonctionne, mais si je cherche à faire ça :

    var var_xml CLOB
    exec :var_xml := '<xml>
    <field>Value</field>
    </xml>'
    INSERT INTO table (id, xml) VALUES (1,:var_xml)

    L'interpréteur quinte et dit qu'il ne reconnait pas la commande <field... blablabla

    Remplacer les retours à la ligne par des \n ne solutionne pas mon problème car il peut arriver que cela produise des lignes plus longues que le maximum autorisé (de l'ordre de 3200 car sauf erreur)

    HELLLLLLP !!!!! je dois migrer une petite applic de PHP/SQLite vers Java/Oracle et ce souci, que je n'avais pas anticipé, me prend grave la tête.

    D'avance merci aux Gurus Oracle.

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Pourquoi ne pas stocker dans un fichier ce que tu veux insérer dans ton champ CLOB et lire le contenu de ton fichier.

    Cf: http://sheikyerbouti.developpez.com/...age=Chap9#L9.4

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par plaineR Voir le message
    Pourquoi ne pas stocker dans un fichier ce que tu veux insérer dans ton champ CLOB et lire le contenu de ton fichier.

    Cf: http://sheikyerbouti.developpez.com/...age=Chap9#L9.4
    Le fichier source XML contient grosso modo 12-15'000 elements que je veux parser et stocker indépendamment dans une table (1 element par tupple dans son propre CLOB).

    L'approche de splitter ces éléments en fichiers séparés pour les importer par la suite est bien entendu possible mais j'ai du mal a croire que je ne peux pas simplement faire un fichier .sql atomique avec tous mes insert dedans. Ce qui fonctionne par ailleurs sans aucun problèmes dans un produit comme SQLite.

    Dans tous les cas merci pour ta réponse, je vais quand même tenter cette solution à défaut mais je trouve ça absurde.

  4. #4
    Membre actif Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Points : 249
    Points
    249

  5. #5
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par Rollmops Voir le message
    Le fichier source XML contient grosso modo 12-15'000 elements que je veux parser et stocker indépendamment dans une table (1 element par tupple dans son propre CLOB).
    Qui te parle de les stocker indépendamment ? As-tu lu l'exemple dans le lien que je t'ai fourni ? Il permet de stocker le contenu d'un fichier ASCII dans un CLOB dans son intégralité.
    => il suffit donc que tu mettes tous tes éléments dans un fichier et de stocker le contenu de ce fichier dans un CLOB.

    Stocker dans une variable en dur ce que l'on veut mettre dans un CLOB, ne me paraît pas optimum en terme de qualité de programmation...

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    C'est la solution que je suis en train d'explorer, mais je suis confronté à un nouveau problème, à savoir l'extrême lenteur de chaque insertion... (environ 2-4s / bloc BEGIN..END

    *soupir*

  7. #7
    Membre actif Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Points : 249
    Points
    249
    Par défaut
    Citation Envoyé par Rollmops Voir le message
    C'est la solution que je suis en train d'explorer, mais je suis confronté à un nouveau problème, à savoir l'extrême lenteur de chaque insertion... (environ 2-4s / bloc BEGIN..END

    *soupir*
    Il faut faire COMMIT souvant...

Discussions similaires

  1. [MySQL] Insertion de données issues d'un textarea dans mysql
    Par gregtix dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/11/2012, 08h54
  2. Lancer un script pl/sql dans sql*plus
    Par samsan dans le forum PL/SQL
    Réponses: 9
    Dernier message: 16/10/2012, 11h36
  3. Insertion de données géo via Pgadmin (shp2pgsql)
    Par mat_elot dans le forum Administration
    Réponses: 3
    Dernier message: 12/04/2010, 17h02
  4. insertion de donnée saisie par le client dans la base de données du serveur
    Par modafine dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 22/09/2008, 12h46
  5. insertion des données d'un fichier word dans une base de données
    Par pigeon015 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/02/2007, 09h04

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