mbleron / ExcelTable

ExcelTable is an Oracle SQL interface to read Microsoft Excel files (.xlsx, .xlsm, .xlsb, .xls, .xml), ODF spreadsheet files (.ods) and flat files as external tables
MIT License
45 stars 12 forks source link

proleme DML INSERT #7

Closed MAROUENGFI closed 5 years ago

MAROUENGFI commented 5 years ago

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

  1. 00000 - "class %s does not exist"
    Cause: Java method execution failed to find a class with the indicated name. Action: Correct the name or add the missing Java class.
mbleron commented 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.

MAROUENGFI commented 5 years ago

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

  1. 00000 - "Aurora assertion failure: %s" Cause: An internal error occurred in the Aurora module. Action: Contact Oracle Worldwide Support.
mbleron commented 5 years ago

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;

MAROUENGFI commented 5 years ago

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)

mbleron commented 5 years ago

(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

MAROUENGFI commented 5 years ago

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 ~]$

mbleron commented 5 years ago

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é.

mbleron commented 5 years ago

Closing the issue...