Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Kettle-Pentaho
Kettle-Pentaho Forum d'entraide Kettle et Pentaho (Kettle, Pentaho Data Integrator)
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 11/01/2008, 15h14   #1
Membre chevronné
 
Avatar de steelspirit
 
Inscription : janvier 2008
Messages : 420
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2008
Messages : 420
Points : 739
Points : 739
Envoyer un message via MSN à steelspirit
Par défaut importer un fichier texte ayant un nombre de champs variables

Bonjour à tous,

J'ai un fichier texte que je souhaite importer dans une base mySQL (ou SQL Server) avec KETTLE. Ce fichier n'est pas délimité mais le premier caractère de chaque ligne détermine le nombre de champs que l'on a par la suite ex:
Code :
1
2
3
4
 
3TOTOTATATITI
1TUTU
2TITITATA
je souhaiterais obtenir après importation :
Code :
1
2
3
4
5
 
VAR1   VAR2   VAR3
TOTO   TATA   TITI
TUTU
TITI   TATA
Je me pose donc les questions suivantes :
  • Est-il possible de faire ça avec KETTLE ?
  • Est-ce mieux d'importer tout dans un seul champ puis de traiter ça après (avec une procédure stockée par exemple) ?

Je débute avec KETTLE et j'avoue que je suis un peu perdu dès qu'il s'agit de traiter des fichiers complexes

Merci d'avance pour votre aide.

Steel
steelspirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2008, 15h28   #2
Membre habitué
 
Inscription : avril 2007
Messages : 107
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : avril 2007
Messages : 107
Points : 108
Points : 108
Envoyer un message via AIM à MattCasters Envoyer un message via MSN à MattCasters Envoyer un message via Yahoo à MattCasters Envoyer un message via Skype™ à MattCasters
Le plus simple c'est d'utiliser le composant "Text File Input" ou en Français "Extraction depuis fichier".

La vous pouvez utiliser des "Filtres", par example:
Chaîne filtre: 3
Position filtre: 0
s'Arrêter sur le filtre: N

C'est pas idéal parce-que on a besoin de 3 composants et il faut lire les fichiers 3 fois, mais avec ce système c'est t.a.f. possible.

Bonne chance,

Matt
MattCasters est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2008, 10h53   #3
Membre chevronné
 
Avatar de steelspirit
 
Inscription : janvier 2008
Messages : 420
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2008
Messages : 420
Points : 739
Points : 739
Envoyer un message via MSN à steelspirit
Merci beaucoup pour votre réponse. En fait le fichier que j'ai pris est un exemple. En réalité mon fichier fait 22 millions de lignes La solution de mettre un filtre n'est donc pas possible.

De plus, je ne sais pas combien de champs je vais avoir au total et donc je ne peux pas les définir dans l'onglet Champs du composant Text File Input, a moins de prévoir large et de définir var1 à var200 à l'avance, mais c'est pas propre !

Une autre idée ?

Merci pour votre aide.

Steel
steelspirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2008, 19h44   #4
Membre habitué
 
Inscription : avril 2007
Messages : 107
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : avril 2007
Messages : 107
Points : 108
Points : 108
Envoyer un message via AIM à MattCasters Envoyer un message via MSN à MattCasters Envoyer un message via Yahoo à MattCasters Envoyer un message via Skype™ à MattCasters
Ouf Steel, la vous avez un vrais problèm. Si la configuration du fichier est défini par le data on sait pas utiliser un outil ETL, certainement pas Kettle.

Mais, il me parait que la structure doit être relativement simple, non?
Probablement on a:
- un ID
- nombre de champs
- les champs, tous des champs textes?

Alor, peut-être il-y a une solution pas trop compliqué comme celle-ci:

http://kettle3.s3.amazonaws.com/variable.zip (Kettle version >= 3.0)

Bonne chance,

Matt
MattCasters est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 10h24   #5
Membre chevronné
 
Avatar de steelspirit
 
Inscription : janvier 2008
Messages : 420
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2008
Messages : 420
Points : 739
Points : 739
Envoyer un message via MSN à steelspirit
Merci Matt pour votre exemple je n'avais pas pensé à utilisé du javascript.
On peut même optimiser un peut en écrivant :
Code :
1
2
3
 
var f = new Array(); 
f[nr-1]= substr(FIELDS, 4*(nr-1), 4*(nr));
en supposant que chaque champs contient 4 caractères ce qui est mon cas dans mon fichier.

Il ne reste plus qu'a alimenter la base de donnée et ça c'est une autre hisoire ...

Steel
steelspirit 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 17h47.


 
 
 
 
Partenaires

Hébergement Web