Comment briser la chaîne à partir d'un fichier Excel en sous-chaînes et le charger?
Question
Je travaille actuellement sur un emploi de talend. Je besoin de charger à partir d'un fichier Excel à une base de données 11g d'Oracle.
Je ne peux pas comprendre comment briser un champ de mon fichier d'entrée Excel et dans les talend charger la chaîne brisée dans la base de données.
Par exemple, j'ai un champ comme ceci:
toto:12;tata:1;titi:15
Et je besoin de charger dans une table, par exemple qualité:
| name | grade |
|------|-------|
| toto |12 |
| titi |15 |
| tata |1 |
|--------------|
Merci à l'avance de
La solution
Dans un emploi Talend, vous pouvez utiliser tFileInputExcel
pour lire votre fichier Excel et tNormalize
puis diviser votre colonne spéciale en lignes individuelles avec un séparateur de « ; ». Après cela, l'utilisation tExtractDelimitedFields
avec un séparateur « : » pour diviser la colonne normalisée dans les colonnes de name
et grade
. Ensuite, vous pouvez utiliser un composant tOracleOutput
pour écrire le résultat à la base de données.
Bien que cette solution est plus prolixe que Java extrait proposé par Alexr, il a l'avantage qu'il reste dans le modèle de programmation graphique de Talend.
Autres conseils
for(String pair : str.split(";")) {
String[] kv = pair.split(":");
// at this point you have separated values
String name = kv[0];
String grade = kv[1];
dbInsert(name, grade);
}
Maintenant, vous devez mettre en œuvre dbInsert()
. Faites-le soit en utilisant JDBC ou à l'aide d'outils de niveau supérieur (par exemple Hivernate, iBatis, JDO, JPA, etc.).