IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Fichier CSV --> BDD


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bobjoumi
    Profil pro
    Inscrit en
    Février 2009
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2009
    Messages : 94
    Par défaut Fichier CSV --> BDD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    if (System.IO.File.Exists("\fichier.csv"))
                {
     
                    StreamReader sr = null;
                    string line;
     
                    try
                    {                   
                        sr = new StreamReader("\fichier.csv");
     
                        line = sr.ReadLine();
                        while (line != null)
                        {
                            line = sr.ReadLine();
                        }
     
                    }
                    finally
                    {
                        if (sr != null) sr.Close();
                    }
                }
    avec ce code je récupère dans la variable "line" chaque ligne de mon fichier.
    la phase suivant et que dans cette ligne il détecte les ";" et ensuite le mètre dans un dataset pour l'intègres dans la BDD le truc c'est que je sais le dire mais pas tro le fair....

    pouvez vous m'aidez SVP

  2. #2
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Bonjour,

    Si tu as récupérer les lignes c'est déjà un bon point.
    Ensuite pour détecter les ; et obtenir les 2 "clés" de part et d'autre du ; tu peux jouer avec la fonction Split.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string[] Keys = new string[2];
    Keys = line.Split(new char[] { ';' });
    Donc la si dans line tu avais "mot1;mot2", tu te retrouves avec
    Keys[0] valant "mot1"
    Keys[1] valant "mot2"
    Maintenant que tu as les deux mots, tu peux les manipuler, non ?

    A noter que tu pourrais jouer avec des List<string> au lieu des tableaux, c'est plus dynamique et que si sur une même ligne tu as plus que un seul ";", ça sera plus facile.

    Ça répond a ta question ?

  3. #3
    Membre confirmé Avatar de bobjoumi
    Profil pro
    Inscrit en
    Février 2009
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2009
    Messages : 94
    Par défaut
    voila ce que je fais je vais teste on va voir si sa marche


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    if (System.IO.File.Exists("fichier.csv"))
                {
     
                    StreamReader sr = null;
                    string line;
     
                    try
                    {
                        //chaine de connexion
                        string connectString = condatabul;
                        //Objet de connexion
                        SqlCeConnection connection = new SqlCeConnection(connectString);
     
                        string sSQL = "INSERT INTO client (code_cli,code_site,nom,add_cli,add_clic,code_postale,ville) VALUES (?,?,?,?,?,?,?)";
                        SqlCeCommand sqlcmd = new SqlCeCommand(sSQL, connection);
     
                        // Ouverture du fichier et écriture du contenu du fichier sur la console
                        sr = new StreamReader("fichier.csv");
     
                        line = sr.ReadLine();
                        while (!sr.EndOfStream)
                        {
                            SqlCeParameter co = new SqlCeParameter("code_cli", SqlDbType.NVarChar);
                            co.Value = line.Split(';')[0];
                            SqlCeParameter si = new SqlCeParameter("code_site", SqlDbType.NVarChar);
                            si.Value = line.Split(';')[1];
                            SqlCeParameter no = new SqlCeParameter("nom", SqlDbType.NVarChar);
                            no.Value = line.Split(';')[2];
                            SqlCeParameter ad = new SqlCeParameter("add_cli", SqlDbType.NVarChar);
                            ad.Value = line.Split(';')[3];
                            SqlCeParameter ac = new SqlCeParameter("add_clic", SqlDbType.NVarChar);
                            ac.Value = line.Split(';')[4];
                            SqlCeParameter pt = new SqlCeParameter("code_postale", SqlDbType.NVarChar);
                            pt.Value = line.Split(';')[5];
                            SqlCeParameter vl = new SqlCeParameter("ville", SqlDbType.NVarChar);
                            vl.Value = line.Split(';')[6];
     
                            sqlcmd.Parameters.Add(co);
                            sqlcmd.Parameters.Add(si);
                            sqlcmd.Parameters.Add(no);
                            sqlcmd.Parameters.Add(ad);
                            sqlcmd.Parameters.Add(ac);
                            sqlcmd.Parameters.Add(pt);
                            sqlcmd.Parameters.Add(vl);
     
                            //ouverture
                            connection.Open();
                            //commande exectuter a chaque saut de ligne 
                            sqlcmd.Prepare();
                            sqlcmd.ExecuteNonQuery();
     
     
                            if (connection.State == ConnectionState.Open)
                            {
                                connection.Close();
                            }
                            //saut de ligne
                            line = sr.ReadLine();
                        }
     
                    }
                    catch (SqlCeException ex)
                    {
                        MessageBox.Show("erreur SQL inattendue.\n" + ex.Message, "Erreur");
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("erreur interne inattendue.\n" + ex.Message, "Erreur");
                    }
                    finally
                    {
                        // Fermeture streamreader
                        if (sr != null) sr.Close();
                    }
                }

  4. #4
    Membre expérimenté
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Billets dans le blog
    4
    Par défaut
    il existe des solutions autres que le code faisant des insertions lignes par lignes pour insérer un fichier dans une bdd. Imagine, si ton fichier fait 5000 lignes, ça fait 5000 insertions, 5000 ouvertures/fermetures de connexion à la bdd.. ça fait beaucoup non? avec quel sgbd travailles-tu?
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Importer des fichiers .CSV dans BDD automatiquement
    Par Caypamoi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/04/2015, 15h20
  2. Réponses: 1
    Dernier message: 10/01/2008, 13h52
  3. [CSV] Update BDD à partir de fichier xls ou csv
    Par masseur dans le forum Langage
    Réponses: 2
    Dernier message: 03/07/2007, 14h51
  4. VBA excel : piloter BdD access et y importer fichier CSV
    Par hnokia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/05/2007, 17h30
  5. Réponses: 10
    Dernier message: 02/04/2007, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo