Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/01/2008, 18h00   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 15
Points : 3
Points : 3
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 :
Citation:
/* - - - - - - - - - - - - - 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 - - - - - - */
ArCal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h10   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h13   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 15
Points : 3
Points : 3
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.
ArCal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h16   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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...
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h21   #5
Invité de passage
 
Inscription : janvier 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 15
Points : 3
Points : 3
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
ArCal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h26   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h37   #7
Invité de passage
 
Inscription : janvier 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 15
Points : 3
Points : 3
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
ArCal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 18h50   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
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
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 11h11   #9
Invité de passage
 
Inscription : janvier 2008
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 15
Points : 3
Points : 3
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.
ArCal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h12.


 
 
 
 
Partenaires

Hébergement Web