Import d'un fichier .csv dans une base mysql

alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010 - 21 janv. 2008 à 11:24
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010 - 22 janv. 2008 à 15:49
bonjour à tous,

Je début aujourd'hui même en C# sous Visual Studio 2003, et je voudrai savoir comment importer un fichier csv dans une table mysql, je me suis déja débrouiller pour faire la connexion a la base, j'ai cherché quelque source sur le commondialog (vb6) mais pas grand chose si vous avez des sources ou des exemples pour m'aider dans ce projet tant sur le "common dialog" ou la fonction split, je suis partant ^^

Merci d'avance

_______________________
<<<< :-: 4L!@$ :-: >>>>

6 réponses

lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
22 janv. 2008 à 08:27
Salut,
Pour lire un fichier:
http://msdn2.microsoft.com/fr-fr/library/db5x7c0d(VS.80).aspx

Ensuite la méthode Split() de la class String pour séparer les éléments.
Tu lui donne une chaine (ex "titi;toto;") et un char qui délimite, ici c'est ';', il te retourne un string[] où la première cellule(index 0) contient titi, et la deuxième (index 1) toto.
2
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
22 janv. 2008 à 08:29
ensuite tu fais ta requete INSERT INTO en donnant comme paramètre les valeurs contenu dans le string[]
1
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
22 janv. 2008 à 09:11
ok merci je vais voir ca :)

_______________________
<<<< :-: 4L!@$ :-: >>>>
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
22 janv. 2008 à 13:52
Re! donc voici mon code, mais apparement le split ne passe pas bien ...

        private void btnImport_Click(object sender, System.EventArgs e)
        {
            //Ouverture de la fenetre de dialogue
            openFileDialog.Filter = "Fichier *.csv (*.csv)|*.csv";

            if (openFileDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            StreamReader sr = File.OpenText(openFileDialog.FileName);
            
            string numero;
            string[] cols;
            string oldnumero;
            string datefacturation = "";
            //Tant que je suis pas en fin de fichier
            while(sr.Peek()!= -1)
            {
                sr.ReadLine();
                sr.ReadLine();
                cols = sr.ReadLine().Split(';');
                // Initialisation des variables
                numero = cols[6];
                oldnumero = cols[6];

                while(numero != oldnumero) //Boucle d'import dans la base
                {
                    datefacturation = cols[1].Substring(10, 4);
                
                    //datefacturation = datefacturation.Substring(10,4);
                    MessageBox.Show(datefacturation);

                    String sql = string.Format("Insert into Sim.T_Facturation2 (McuCode,Facturation)VALUES({0},{1})", cols[6], datefacturation);

                    try
                    {
                        myCon.ExecuteNonQuery(sql);
                    }
                    catch (Exception ex)
                    {
                        myLog.LogError(ex.Message, ex.Source);
                    }
                }
            }


Quel est ce probleme si tu le vois au cas ou ...

_______________________
<<<< :-: 4L!@$ :-: >>>>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
22 janv. 2008 à 14:02
Regarde peut-être cette source, je l'utilise et elle marche.



StreamReader



reader =

new



StreamReader
(

@"C:\test.txt"
);
char
charSeparator =
';';


string
currentLine;

int number;
string description = "";


while
((currentLine = reader.ReadLine()) !=

null
)
{
   

string
[] dataArray = currentLine.Split(

this
.charSeparator);
   

int
number =

Convert
.ToInt32(dataArray[0]);


   string
description = dataArray[1];


}
reader.Close();
Pour info, mon fichier c:\test.txt contient les éléments suivants:
1;Mon premier champ
2;Mon deuxième champ
0
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
22 janv. 2008 à 15:49
               numero = cols[6];
                oldnumero = cols[6];

                while(numero != oldnumero) //Boucle d'import dans la base
  

si t'arrives a passer une fois dans ta boucle while avec ce code, chapeau...
tu as soit une erreur dans ton initiaisation de oldnumero, soit une erreur de condition de boucle...

Nul ne devient grand par la guerre...
0
Rejoignez-nous