You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.7 KiB

Imports System.Data.SqlClient
Imports System.IO
Imports MyNameSpace.CSVDataAdapter
Imports System.Reflection
Imports System.Text
Module Module1
Dim tablename As String = ""
Dim inputfile As String = ""
Dim Lines As Integer = 0
Dim totallc As Integer = 0
Dim dt As New DataSet
Dim CONNSTRING As String = "data source=shu00;initial catalog=Coldabgleich;persist security info=False;workstation id=;packet size=4096;user id=sa;password=*shu29"
Dim arg() = Environment.GetCommandLineArgs()
Sub Main()
FileOpen(5, ApplicationPath() + "loadjournal.txt", OpenMode.Append, OpenAccess.Write)
tablename = arg(1)
inputfile = arg(2)
Lines = arg(3)
Console.WriteLine("Tabelle: " + tablename)
Console.WriteLine("Inputfi: " + inputfile)
FileOpen(1, ApplicationPath() + "\connstring.txt", OpenMode.Input, OpenAccess.Read)
Input(1, CONNSTRING)
FileClose(1)
Load_data()
FileClose(5)
End Sub
Public Function ApplicationPath() As String
Return Path.GetDirectoryName([Assembly].GetEntryAssembly().Location) + "\"
End Function
Private Sub Load_data()
Dim lc As Integer = 0
Dim line As String
Dim reader As StreamReader = New StreamReader(inputfile, Encoding.Default)
Dim writer As StreamWriter = New StreamWriter(inputfile + ".tmp", False, System.Text.Encoding.Unicode)
Do Until reader.EndOfStream
line = reader.ReadLine
writer.WriteLine(line)
lc = lc + 1
totallc = totallc + 1
If lc > Lines - 1 Then
Console.WriteLine(Now.ToString + ": Rows G: " + lc.ToString)
lc = 0
writer.Flush()
writer.Close()
Bulkloader(inputfile + ".tmp")
writer.Dispose()
writer = New StreamWriter(inputfile + ".tmp")
End If
Loop
writer.Flush()
writer.Close()
Bulkloader(inputfile + ".tmp")
Console.WriteLine("Ende")
WriteLine(5, Now.ToString + " " + inputfile + " Total Rows:" + totallc.ToString)
Console.WriteLine()
End Sub
Sub Bulkloader(ByVal filename As String)
Dim x As New MyNameSpace.CSVDataAdapter(filename, False, vbTab)
Using bulkCopy = New SqlBulkCopy(CONNSTRING)
dt.Tables.Clear()
x.Fill(dt, "Daten")
Console.WriteLine(Now.ToString + ": Rows I: " + dt.Tables(0).Rows.Count.ToString)
bulkCopy.DestinationTableName = tablename
SET_COLUMNAMES(tablename)
'MsgBox(dt.Tables(0).Rows.Count)
bulkCopy.WriteToServer(dt.Tables(0))
End Using ' dispose of SqlBulkCopy object
End Sub
Private Sub SET_COLUMNAMES(ByVal TABLENAME)
Dim connection As New SqlConnection()
Dim da As New SqlDataAdapter("", connection)
Dim sqlcmd As New SqlCommand
Dim ds As New DataSet
sqlcmd.CommandText = "Select top 1 * from " + TABLENAME
sqlcmd.CommandType = CommandType.Text
sqlcmd.Connection = connection
Try
connection.ConnectionString = CONNSTRING
connection.Open()
da.SelectCommand = sqlcmd
da.Fill(ds, "Datatable1")
Dim i As Integer
For i = 0 To ds.Tables(0).Columns.Count - 1
dt.Tables(0).Columns(i).ColumnName = ds.Tables(0).Columns(i).ColumnName
Next
'Insert_Journal("-> Total Datensätze: " & Trim(Str(ds.Tables(0).Rows.Count)))
Catch ex As Exception
Finally
connection.Close()
da.Dispose()
sqlcmd.Dispose()
End Try
End Sub
End Module