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

 .NET Discussion :

CSV to SQL SERVER


Sujet :

.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 31
    Points
    31
    Par défaut CSV to SQL SERVER
    Bonjour,

    J'ai un projet console classic et je veux pouvoir enregistrer un fichier .csv dans une base de données sql server mais avec des règles.

    Je m'explique :
    J'ai un csv dans le quel sur la première ligne il y a les colonnes et sur les lignes du dessous les lignes à enregistrer.

    Je souhaite remplir les colonnes de mon Sql Server avec ce fichier en fonction d'un paramètre de ma fonction. C'est à dire que si j'ai "entier" en paramètre, on vide la table et on ajoute les données du csv dans sql server et si j'ai "update" en paramètre alors la on vérifie chaque ligne et si une ligne a ne serait-ce qu'un champs différent alors on met à jour la ligne.

    J'ai fais pas mal de recherche et sqlbulkcopy reviens souvent. A savoir je ne dois pas ajouter de dll externe comme csvreader par exemple.

    Pour l'instant j'ai quelque chose comme ça mais plein de choses sont à revoir et je suis un peu perdu très honnêtement:
    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
            public static void insertBdd()
            {
     
                string filename = @"c:\fichier.csv";
     
                SqlConnection conn = new SqlConnection(connectionString);
                conn.Open();
                SqlTransaction transaction = conn.BeginTransaction();
                try
                {
                    using (StreamReader file = new StreamReader(filename))
                    {
     
                        SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, transaction);
                        copy.DestinationTableName = "temp";
                        copy.WriteToServer(csv);
                        transaction.Commit();
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                }
                finally
                {
                    conn.Close();
                }
            }
    Si quelqu'un a une idée, merci beaucoup !

  2. #2
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Merci d'avoir pris le temps de me lire,

    J'avais déjà vu ce site mais je ne vois pas comment je peux faire pour mettre à jour les données de seulement les lignes qui ont changées.

    Sinon je n'utilise pas du tout oledb/odbc il me semble que c'est juste un sql server.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Un début de réponse sur ce topic:
    http://www.developpez.net/forums/d99...ation-asp-net/

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Tu as raison je pense qu'il faut que j'utilise "BULKINSERT" avec un .bat.

    Donc en c# j’exécute le .bat qui exécute le script dans lequel il y'a le BULK INSERT dans une table de travail? Et ensuite je fais mon UPDATE séparément si j'ai bien compris ? Par ce que si on INSERT directement dans la table en question il y aura des problèmes de clés primaires?

    Le fait que ce soit sur une Base Azure ne pose pas de problème?

Discussions similaires

  1. importer un fichier CSV dans SQL SERVER 2008
    Par ghir_ana dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/10/2011, 14h30
  2. Importer des fichiers CSV dans SQL Server avec SSIS
    Par nathantahiti dans le forum SSIS
    Réponses: 4
    Dernier message: 02/08/2011, 16h09
  3. importer des fichiers csv dans sql server
    Par nathantahiti dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 22/07/2011, 12h02
  4. Réponses: 6
    Dernier message: 20/04/2011, 12h11
  5. csv et sql server 2005
    Par phoenix345 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 14/02/2010, 21h30

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