Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
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 02/08/2007, 16h30   #1
Membre à l'essai
 
Inscription : février 2007
Messages : 75
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : février 2007
Messages : 75
Points : 20
Points : 20
Par défaut Charger un Fichier CSV avec traitement

Bonjour,

Voila j'ai besoin de charger de charger un fichier CSV dans un Base de données. Le problème etant que j'ai des traitement a faire sur certaines données de ce fichier.

Par exemple :
J'ai une colonne date dans laquelle les données sont stockées au format AAMMJJ et moi je désire mettre ces données dans une table Date (par exemple) mais de la façon suivante :

DATE
--------
Année
Mois
Jours

Alors je ne sais pas vraiment comment faire cela ???
Procédure stocké ? ( je ne sais pas ce que c'est mais je vois le principe)

Sachant que je en prefere pas faire de Batch Java car ce fichier est trop lourd pred de 800 000 lignes
Iphelias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 16h34   #2
Membre à l'essai
 
Inscription : février 2007
Messages : 75
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : février 2007
Messages : 75
Points : 20
Points : 20
Ou alors je viens d'avoir une autre idée.
Charger ce fichier via un load table dans ma Bd dans une table temporaire. Faire le traitement alimenter les bonnes tables et supprimer la table temporaire ??

Un peu loufoque peut être ...
Iphelias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 17h33   #3
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
ça me parait faisable. Si tu ne peux pas agir sur la génération du csv alors ta solution est bien.

pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 11h38   #4
Membre à l'essai
 
Inscription : février 2007
Messages : 75
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : février 2007
Messages : 75
Points : 20
Points : 20
On peut faire des traitement dan sune procedure stocké en MySql ??
Car la je vais devoir découper une chaine de caractère qd même
Iphelias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 13h55   #5
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
Citation:
On peut faire des traitement dan sune procedure stocké en MySql
Oui
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 11h06   #6
Membre à l'essai
 
Inscription : février 2007
Messages : 75
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : février 2007
Messages : 75
Points : 20
Points : 20
Et tu sais ou je peux trouver des exemple de traitements sur des chaines de caractères par exemple ou autre en procédure stockée ... donc en langage PL/SQL
Iphelias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 11h19   #7
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
Quels genres de traitement tu veux faire sur tes chaines.

Tu peux faire une proc stockée qui se charge de l'insertion. Tu passes tout ce que tu veux inserer en parametre et apres tu insere ce que tu veux ou tu veux.

exemple
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
DROP PROCEDURE IF EXISTS PRC_INSERT_INTO_TABLE_TOTO;
 
CREATE PROCEDURE PRC_INSERT_INTO_TABLE_TOTO (IN param1 INT,
                                         IN param2 INT, 
                                         IN param3 VARCHAR(3),
                                         IN param4 VARCHAR(255))
 
BEGIN
 
INSERT INTO TOTO(col1, col2, col3, col4)
VALUES (param1, param2, SUBSTRING(param4,10,12),param3l);
 
END;
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 11h32   #8
Membre à l'essai
 
Inscription : février 2007
Messages : 75
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : février 2007
Messages : 75
Points : 20
Points : 20
Ba en gros dans mon fichier csv j'ai :
060925;etc ....

En y regardant de plus près :
06 ->>> 2006
09 ->>> 09 mois (Septembre)
25 ->>> jour

J'aimerais stocker ce champs que je dois redécouper dans une table :

Date
------
int Année
int Trimestre
int Mois
int Jour
Iphelias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 13h39   #9
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
Donc c'est possible.
Il te suffit d'introduire des variables si tu veux faire des traitements un peu plus long.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
DROP PROCEDURE IF EXISTS PRC_INSERT_INTO_TABLE_TOTO;
 
CREATE PROCEDURE PRC_INSERT_INTO_TABLE_TOTO (IN param1 INT,
                                         IN param2 INT, 
                                         IN param3 VARCHAR(3),
                                         IN param4 VARCHAR(255))
 
BEGIN
 
DECLARE var1 VARCHAR(2);
 
SET var1 = SUBSTRING(.....)
INSERT INTO TOTO(col1, ....)
VALUES (var1, ....);
 
END;

Apres comment retrouver le nom du mois à partir du chiffre, il te faut regarder la doc mysql sur tout ce qui est date

pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 13h53   #10
Membre à l'essai
 
Inscription : février 2007
Messages : 75
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : février 2007
Messages : 75
Points : 20
Points : 20
merci je vais essayer de me débrouiller avec ça
Iphelias 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 04h21.


 
 
 
 
Partenaires

Hébergement Web