Welcome Guest! Log in
×

Notice

The forum is in read only mode.
Stambia versions 2.x, 3.x, S17, S18, S19 and S20 are reaching End of Support January, 15th, 2024. Please consider upgrading to the supported Semarchy xDI versions. See Global Policy Support and the Semarchy Documentation.

The Stambia User Community is moving to Semarchy! All the applicable resources have already been moved or are currently being moved to their new location. Read more…

Topic-icon Solved DB2 - Comment charger un fichier dans une table, sans création de table temp ?

More
23 Aug 2017 10:51 #1 by Virginie_Samson
Bonjour
Dans un cas, nous avons les droits d'écrire dans certaines tables DB2, mais pas de créer de nouvelles tables.
Cela pose problème au mapping stambia qui cherche à créer une table temporaire de Load.

Pouvons nous activer une option qui chargerai directement le fichier dans la table cible ?

Merci d'avance
Cordialement
More
25 Aug 2017 10:10 #2 by Thomas BLETON
Bonjour,

Voici quelques idées :
- Faire un process qui exécute l'utilitaire de LOAD d'IBM. A privilégier s'il y a du volume et des contraintes de perfs. Evidemment il faut que le serveur DB2 ait accès au fichier.
- Faire un process qui lit le fichier (SQL Operation) et qui insère dans la table (SQL Operation). Pratique si le fichier ne peut pas être déposé sur un disque accessible au serveur DB2.
- Le point précédent peut être mis en oeuvre de base à base, également.

A disposition pour plus d'infos.
More
04 Sep 2017 10:48 #3 by CGI_Olivier_Oddes
Bonjour,

Merci pour ce retour. En appliquant la deuxième solution, on a effectuée l’enchaînement suivant :

- SQL OPERATION de SELECT relié par un DirectBind à un SQL OPERATION d'INSERT

Malheureusement il a une anomalie au niveau de l'étape d'insert. Et je doute de la syntaxe que j'utilise :

SQL OPERATION : SELECT
select COl1,COl2,COl3 from maTable_NZ

SQL OPERATION : INSERT
INSERT INTO maTable_DB2 (COl1,COl2,COl3)
VALUES (:{COl1}:,:{COl2}:,:{COl3}:);

Est ce que la syntaxe vous parait correcte?

En vous remerciant,

Cordialement,
Olivier
More
04 Sep 2017 10:55 #4 by Thomas BLETON
La syntaxe semble correcte, oui.
On oublie parfois de positionner le SQL_ACTION_TYPE à SELECT sur la source et à INSERT sur la cible, l'avez-vous bien fait ?
Quelle est l'erreur remontée sur l'action ?
More
04 Sep 2017 11:26 #5 by CGI_Olivier_Oddes
Après vérification, les paramètres SQL Action Type sont correctement valorisés

Il y a 3 erreurs au niveau de la SQL OPERATION d'INSERT. Mais au vue des codes erreurs DB2, je pense que le problème ne se situe plus vraiment du coté de Stambia :)

SqlOperation
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;;,
?,
?,
?,
?,
?,
?
);END-OF-STATEMENT, DRIVER=3.61.75

SqlOperation
com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-104;42601;;|,
?,
?,
?,
?,
?,
?
)|END-OF-STATEMENT, DRIVER=3.61.75

SqlOperation
java.sql.SQLException: Last row position : 1
More
04 Sep 2017 12:18 #6 by Thomas BLETON
C'est peut être le point virgule à la fin de l'INSERT qui est en trop ?
Certaines bases ne l'acceptent qu'en mode "multi-query".
More
04 Sep 2017 14:00 - 21 Nov 2017 12:36 #7 by CGI_Olivier_Oddes
Nickel, effectivement c'était le point virgule qui bloquait. Merci tout fonctionne correctement maintenant :)
Last edit: 21 Nov 2017 12:36 by Thomas BLETON.