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

PL/SQL Oracle Discussion :

[JAVA & PL/SQL] Recherche d'informations


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut [JAVA & PL/SQL] Recherche d'informations
    Bonjour,

    Je travaille actuellement sur l'alimentation XML d'une base Oracle 10gR2 en passant par un package java.

    Mais pour cela ,j 'ai plusieurs souci :
    - en raison de mes dba je ne peux pas utiliser l'instruction en ligne de commande loadjava et dropjava. Donc comment compiler et charger dans la base une classe java sans cela ?

    - j'ai finalement réussit à les charger en base , comment construire le package qui va me permettre d'appeller ma classe java dans un stock proc oracle ?

    - Et enfin si quelqun à des liens pour expliquer les différentes maniéres de gérer l'import de données XML dans Oracle, ca m'intérresse.


    par avance merci à ceux qui répondront et à ceux qui auront pris le temps de lire ce pavé

    Mon code java :
    /* - - - - - - - - - - - - - Code Begins Here :XmlWriteToDb.java - - - - - - */


    /*
    * XmlRWriteToDb: Code Example to read the file NestedSample.xml created
    * by XMLReadFromDb and transfer the conents into the
    * nested Table NESTED_SAMPLE_INSERT
    */
    package XMLSamples;

    import oracle.xml.sql.dml.*;
    import java.sql.*;
    import oracle.jdbc.driver.*;
    import oracle.jdbc.*;
    import java.net.*;

    public class XmlWriteToDb
    {
    public static void main(String args[]) throws SQLException
    {
    String tabName = "NESTED_SAMPLE";
    String fileName = "./home/456426/XML/NestedSample.xml";
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    Connection Conn =
    DriverManager.getConnection("jdbc:oracle:thin:user/pwd@serveur:1521:instance");

    OracleXMLSave save = new OracleXMLSave(Conn, tabName);
    URL url = save.createURL(fileName);
    int rowCount = save.insertXML(url);

    System.out.println("successfully inserted "+rowCount+
    " rows into " + tabName);

    Conn.close();
    }
    }
    /* - - - - - - - - - - - - - Code Ends Here :XmlWriteToDb.java - - - - - - */

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par ArCal Voir le message
    - en raison de mes dba je ne peux pas utiliser l'instruction en ligne de commande loadjava et dropjava.
    encore des DBA psychorigides

    T'as réussi ou pas alors... parce que juste après tu dis : "j'ai finalement réussit à les charger en base"... il me semblait que seul loadjava permettait de le faire

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par orafrance Voir le message
    encore des DBA psychorigides

    T'as réussi ou pas alors... parce que juste après tu dis : "j'ai finalement réussit à les charger en base"... il me semblait que seul loadjava permettait de le faire
    Je me suis arrangé avec un DBA pour qu'il le fasse pour moi (avec loadjava)mais il a posé sa démission donc je peux plus le refaire

    Il me faut donc une autre méthode , je regarde sur le net apparement y a un truc dans DBMS_JAVA une méthode loadjava mais c'est obscur.

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    apparemment ça marche de la même manière que le client loadjava : http://download.oracle.com/docs/cd/B...htm#ABC2124788

    Mais faudrait quand même savoir ce qui gêne à ce point les DBA pour essayer de trouver la meilleure alternative...

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par orafrance Voir le message
    Mais faudrait quand même savoir ce qui gêne à ce point les DBA pour essayer de trouver la meilleure alternative...
    Ben sur une environnement de dév , c'est tout simplement chiant. Merci pour le lien. Mais reste la suite de mes ennuis

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    bah déjà, je m'étonne que tu sois obligé de passer par une procédure java simplement pour gérer du XML alors qu'Oracle gère le XML de manière native

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Oui moi aussi mais toute les propositions autres ont été rejetées car jugées non performantes.
    Je vais donc expliquer la maniére selon laquelle nos DBA jugent qu'un import XML dans Oracle doit se faire.

    XML -> Procédure Java -> nested table -> Fichier Plat -> Data pump -> Table d'import finale.

    En gros , chargment du fichier XML (100 méga) par la procédure Oracle dans des tables liées puis export dans un fichier plat pour un réimport par le driver data pump d'Oracle dans la structure finale.

    Impossible de faire plus performant selon eux

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Ca me parait beaucoup moins compliqué que ça : http://download.oracle.com/docs/cd/B....htm#sthref561

    Tu importes dans une colonne CLOB et tu charges ta table en parsant le XML

    http://asktom.oracle.com/pls/asktom/...:2853285548502

    En espérant que ça t'aidera

    C'est peut-être même plus simple avec SQL*Loader : http://download.oracle.com/docs/cd/B....htm#sthref678

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Solution trouvée
    Bon juste pour info et pour tous ceux qui chercherait.

    Méthode pour impoerter une classe java , la compiler et l 'éxécuter :

    1) Charger la classe java dans Oracle:
    CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "Nom_de_la_Source" AS
    public class Nom_de_la_classe
    {
    /** code java **/
    }

    2) Procédure d'appel de la classe java

    CREATE OR REPLACE PROCEDURE Nom_de_la_Proc (/*paramétres*/) AS LANGUAGE JAVA NAME 'Nom_de_la_source.Nom_de_la_classe(/*paramétres*/)';

    3) lancement de la proc

    SET SERVEROUTPUT ON SIZE 1000000
    CALL DBMS_JAVA.SET_OUTPUT(1000000);
    BEGIN
    Nom_de_la_Proc (/*paramétre*/ => /*valeur du paramétre*/);
    END;


    En espérant que ça aide ceux qui cherche un peu d'aide la dessus.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/05/2009, 03h17
  2. [Java & SIG] Recherche d'informations
    Par eclesia dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 19/04/2009, 17h55
  3. [JAVA & PL/SQL] Recherche d'informations
    Par ArCal dans le forum SQL
    Réponses: 8
    Dernier message: 08/01/2008, 12h11
  4. [SOURCEMAGE] Recherche d'informations
    Par Blowih dans le forum Autres
    Réponses: 5
    Dernier message: 18/07/2004, 20h40
  5. [Rave][Delphi][Base SQL] besoin d'informations
    Par David Altech dans le forum Rave
    Réponses: 1
    Dernier message: 30/07/2003, 14h59

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