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 :
Mais ce code est super lent. Pour 8000 lignes, cela met 5 à 8 minutes.
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
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....
Partager