Closed MAROUENGFI closed 5 years ago
Bonjour,
L'erreur parle d'elle même : il manque les classes Java nécessaires pour utiliser la fonctionnalité STREAM_READ. Les composants à installer sont détaillés dans le README, au paragraphe Java.
Merci pour votre réponse, mais nous sommes bloqués maintenant avec cette erreur
Erreur commençant à la ligne: 1 de la commande - declare
ctx ExcelTable.DMLContext; nrows integer; begin
ctx := ExcelTable.createDMLContext('TMP_SAMPLE2');
ExcelTable.mapColumn(ctx, p_col_name => 'ID', p_col_ref => 'A'); ExcelTable.mapColumn(ctx, p_col_name => 'NAME', p_col_ref => 'B'); ExcelTable.mapColumn(ctx, p_col_name => 'VAL', p_col_ref => 'C');
nrows := ExcelTable.loadData( p_ctx => ctx , p_file => ExcelTable.getFile('STAT_AMAT','sample_3.xlsx') , p_sheet => 'DataSource' , p_method => ExcelTable.STREAM_READ , p_dml_type => ExcelTable.DML_INSERT );
dbms_output.put_line(nrows || ' rows inserted.');
end; Rapport d'erreur - ORA-29516: échec d'assertion Aurora : Assertion failure at eox.c:359 Uncaught exception System error: java/lang/UnsupportedClassVersionError ORA-06512: à "SYS.EXCELTABLE", ligne 1608 ORA-06512: à "SYS.EXCELTABLE", ligne 2126 ORA-06512: à "SYS.EXCELTABLE", ligne 2304 ORA-06512: à "SYS.EXCELTABLE", ligne 3481 ORA-06512: à ligne 13
Un problème de version des jars installés apparemment.
Quelle est la version exacte de la base et quels composants Java avez-vous chargés?
SELECT * FROM v$version;
j'ai exécuté la requête "SELECT * FROM v$version;"
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production PL/SQL Release 11.2.0.1.0 - Production CORE 11.2.0.1.0 Production TNS for Linux: Version 11.2.0.1.0 - Production NLSRTL Version 11.2.0.1.0 - Production (j'ai installé les jars suivantes loadjava -u user/passwd@sid -r -v -jarsasdbobjects java/lib/stax-api-1.0-2.jar loadjava -u user/passwd@sid -r -v -jarsasdbobjects java/lib/sjsxp-1.0.2.jar loadjava -u user/passwd@sid -r -v -jarsasdbobjects java/lib/exceldbtools-1.6.jar)
(j'ai installé les jars suivantes loadjava -u user/passwd@sid -r -v -jarsasdbobjects java/lib/stax-api-1.0-2.jar loadjava -u user/passwd@sid -r -v -jarsasdbobjects java/lib/sjsxp-1.0.2.jar loadjava -u user/passwd@sid -r -v -jarsasdbobjects java/lib/exceldbtools-1.6.jar)
Les 2 premiers sont bons, mais pas le dernier. Il faut installer exceldbtools-1.5.jar
pour les versions < 11.2.0.4.
Relisez le README :wink:
Attention : pensez à dropper exceldbtools-1.6.jar (dropjava ...) avant d'installer le 1.5
un message d'erreur dropjava -u sys/amp5 -v -r exceldbtools-1.6.jar SQL Error while connecting with oci8 driver to default database: ORA-12162: TNS:net service name is incorrectly specified
exiting : could not open connection [ofm11g@dom ~]$
On s'éloigne du sujet... La chaîne de connexion ne spécifie pas le service ou le SID, donc le client Oracle essaie a priori de récupérer l'info dans la variable d'environnement ORACLE_SID, qui d'après l'erreur, est sûrement vide. Sur quel schéma cible ont été fait les loadjava initiaux? Je déconseille d'installer quoi que ce soit dans le schéma SYS, utiliser un schéma applicatif dédié.
Closing the issue...
Erreur commençant à la ligne: 1 de la commande - declare
ctx ExcelTable.DMLContext; nrows integer;
begin
ctx := ExcelTable.createDMLContext('TMP_SAMPLE2');
ExcelTable.mapColumn(ctx, p_col_name => 'ID', p_col_ref => 'A'); ExcelTable.mapColumn(ctx, p_col_name => 'NAME', p_col_ref => 'B'); ExcelTable.mapColumn(ctx, p_col_name => 'VAL', p_col_ref => 'C');
nrows := ExcelTable.loadData( p_ctx => ctx , p_file => ExcelTable.getFile('STAT_AMAT','sample_3.xlsx') , p_sheet => 'DataSource' , p_method => ExcelTable.STREAM_READ , p_dml_type => ExcelTable.DML_INSERT );
dbms_output.put_line(nrows || ' rows inserted.');
end; Rapport d'erreur - ORA-29540: classe db/office/spreadsheet/ReadContext inexistante ORA-06512: à "AMATEUR.EXCELTABLE", ligne 1608 ORA-06512: à "AMATEUR.EXCELTABLE", ligne 2126 ORA-06512: à "AMATEUR.EXCELTABLE", ligne 2304 ORA-06512: à "AMATEUR.EXCELTABLE", ligne 3481 ORA-06512: à ligne 14
Cause: Java method execution failed to find a class with the indicated name. Action: Correct the name or add the missing Java class.