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
| Public Sub ImportCSV2SQL(fileName As String, sqlTable As DataTable, column2Import() As Integer)
' Préparation des variables SQL
Dim sqlConxtion As SqlConnection = New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\jeanraad\Desktop\" & _
"Holcim Quality Solutions\VB.Net\HQS_Dev\HQS_Dev\HQSdb.mdf;Integrated Security=True" & _
";Connect Timeout=30")
Dim sqlAction As SqlBulkCopy = New SqlBulkCopy(sqlConxtion.ConnectionString)
Dim sqlCommand As New SqlCommand("DELETE FROM dbo." & sqlTable.TableName, sqlConxtion)
'Dim sqlAdapter As New SqlDataAdapter("Select * From dbo." & sqlTable.TableName, sqlConxtion)
' Préparation des variables StreamReader et CsvReader
Dim stream As StreamReader = New StreamReader(fileName) : Dim streamCount As StreamReader = New StreamReader(fileName)
Dim csvCopy As CsvReader = New CsvReader(stream, True, ";"c)
' Décompte du nombre de lignes dans le fichier *.CSV
Dim nbrLines As Integer = 0
While streamCount.Peek <> -1
nbrLines += 1
Dim line As String = streamCount.ReadLine()
End While
' Comparaison avec la table existante dans SQL et le nombre de lignes est plus conséquente
' dans le *.CSV alors remplacement de la table sinon demande à l'utilisateur s'il veut la
' remplacer(1) ou annuler l'action (2)
If sqlTable.Rows.Count <= nbrLines - 1 And sqlTable.Rows.Count <> 0 Then
Dim msgResult = MsgBox("The number of rows of the CCList that you are trying to import is higher than those of those of the already existing CCList. Do you want to replace the old table or abort the importation?")
If msgResult = 1 Then
Exit Sub
End If
End If
' Tentative de se conecter au serveur SQL
Try
sqlCommand.Connection.Open()
Catch myerror As SqlException
MsgBox("Error connection SQL")
sqlCommand.Connection.Close()
Exit Sub
End Try
' Suppression de la table afin de pouvoir y introduire de nouvelles données
sqlCommand.ExecuteNonQuery()
sqlCommand.Connection.Close()
' Mappings des colonnes entre le fichier *.CSV et la table de destination
For i = 0 To column2Import.Length - 1
sqlAction.ColumnMappings.Add(column2Import(i), i)
Next
' Transfère des données des données du fichier *.CSV à la table de destination
sqlAction.DestinationTableName = sqlTable.TableName
sqlAction.WriteToServer(csvCopy)
End Sub |
Partager