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:
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....