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

MS SQL Server Discussion :

Import csv en vb.net dans une base microsoft sql serveur


Sujet :

MS SQL Server

  1. #1
    Membre régulier Avatar de Stephane_br
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 83
    Points
    83
    Par défaut Import csv en vb.net dans une base microsoft sql serveur
    Bonjour,

    Je rencontre un petit souci actuellement que je n'arrive pas à résoudre.
    J'ai cherché sur le net plusieurs exemples mais rien n'y fait.

    Mon problème est le suivant :

    J'ai un package SSIS sur Microsoft Sql Serveur v11.0.3153 dans lequel j'ai un script en VB.NET qui, entre autre, à moment donné, doit importer des données à partir d'une url d'un fichier .csv
    La procédure actuelle que j'ai mise en place est fonctionne correctement, par lecture ligne à ligne du contenu du fichier .csv, comme ceci :

    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
    Dim csvFile As String = srv_url_sources & file_name
    Dim sLine As String = ""
    If System.IO.File.Exists(csvFile) Then
       Dim fileReader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(csvFile)
       While (Not (fileReader.EndOfStream))
          sLine = Trim(fileReader.ReadLine().ToString() & "")
          Dim sRecords() As String = sLine.Split(New Char() {";"c})
              '// mon code d'insertion ici...
              Dim strSql As String = "INSERT INTO [MATABLE] ("
              strSql = strSql & " mon_champ1, mon_champ2, ....  "
              strSql = strSql & " ) VALUES ( "
              strSql = strSql & " @mon_champ1, @mon_champ2, ....  "
              strSql = strSql & " ) "
              CmdInsert.Parameters.AddWithValue("@mon_champ1", sRecords(0).ToString())
              CmdInsert.Parameters.AddWithValue("@mon_champ2", sRecords(1).ToString())
              ....
              connSql.Open()
    	  CmdInsert.ExecuteNonQuery()
    	  connSql.Close()
    	  CmdInsert = Nothing
       Wend
    End If
    Mais ce code est super lent. Pour 8000 lignes, cela met 5 à 8 minutes.
    J'ai plusieurs fichiers à importer qui peuvent être plus volumineux encore, ce qui porte mon traitement à des temps super longs.

    Je voudrais savoir si il est possible d'importer, par une requête SQL, le fichier csv directement en une seule étape du style :
    INSERT INTO [maTable] FROM [C:\MONSITE\monfichier.csv]
    Cela via un driver ou quelque chose d'autre ????

    Merci pour votre aide ou les liens que vous voudrez bien m'indiquer pour quelques pistes....

  2. #2
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 229
    Points : 266
    Points
    266
    Par défaut
    Bonjour,

    Regardez l'instruction BULK INSERT.

    http://blog.sqlauthority.com/2008/02...to-sql-server/

    @+

  3. #3
    Membre régulier Avatar de Stephane_br
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 83
    Points
    83
    Par défaut
    Wouah super, c'est tout à fait ça !!!
    Merci beaucoup !
    Merci.

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Notez que vous auriez très bien pu faire cela sans écrire une seule ligne de code dans votre package SSIS, en utilisant une source fichier plat et une cible SQL Server.

    @++

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/12/2014, 15h25
  2. Réponses: 4
    Dernier message: 03/08/2012, 16h41
  3. Import d'un fichier Excel dans une base de données MySql via POI
    Par intel42 dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 27/07/2011, 16h24
  4. [SQL-Server] importer csv dans une base de sql server avec php
    Par berroudji dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/06/2010, 09h23
  5. Réponses: 1
    Dernier message: 19/02/2008, 00h32

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