Разбор из файла журнала

У меня есть файл журнала в формате txt. Я хочу импортировать его в базу данных доступа. Первое, что я сделал в качестве теста, это импортировал его в сетку данных, чтобы проверить, возможно ли это. Код, который я использовал, приведен ниже:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Using Reader As New Microsoft.VisualBasic.FileIO.
TextFieldParser(TextBox1.Text)
        Reader.TextFieldType =
                    Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
        Reader.SetFieldWidths(8, 8)
        Dim currentRow As String()
        While Not Reader.EndOfData
            Try
                dg1.Rows.Clear()
                currentRow = Reader.ReadFields()
                Dim currentField As String
                For Each currentField In currentRow
                    dg1.Rows.Add(currentField)
                Next
            Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                MsgBox("Line " & ex.Message &
                "is not valid and will be skipped.")
            End Try
        End While
    End Using
End Sub

Файл журнала выглядит следующим образом:

 6/17/13   9:39AM 103  01   < DISA  incoming >71857359          00:01'13" .... 0
 6/17/13   9:37AM 102  04   < DISA  incoming >71470674          00:03'18" .... 0
 6/17/13   9:42AM 102  02   < DISA  incoming >71759940          00:00'29" .... 0
 6/17/13   9:41AM 103  03   < DISA  incoming >71470674          00:01'59" .... 0
 6/17/13   9:42AM 102  04   < DISA  incoming >76441362          00:00'24" .... 0
 6/17/13   9:43AM 103  02   < DISA  incoming >70247389          00:01'35" .... 0

Я пытался по крайней мере импортировать первые два поля, которые представляют собой дату и время, каждое из которых находится в соответствующем столбце, но, похоже, это не работает.

Может ли кто-нибудь помочь мне разобрать этот журнал в базу данных plz


person Lebnani    schedule 13.10.2013    source источник
comment
Вы можете опубликовать несколько строк входного файла? материал в конце просто лишний? что именно не так с первыми двумя - они должны быть одной датой и временем? Поскольку мы не можем видеть необработанные данные и не знаем схему базы данных, нам остается много гадать.   -  person Ňɏssa Pøngjǣrdenlarp    schedule 14.10.2013
comment
Я полагаю, что очистка строк сетки данных в каждом цикле на самом деле не то, что вам нужно, переместите Rows.Clear за пределы цикла while   -  person Steve    schedule 14.10.2013
comment
Хорошо, проблема в dg1.Rows.Add(currentField), он берет только первую часть, которая является датой, и во 2-й строке добавляет время, а в 3-й - 2-ю дату из 2-й строки журнала, но что мне нужно добавить строку точно так же, как журнал, поэтому сначала нужно взять дату, а затем время и добавить их в ту же строку   -  person Lebnani    schedule 14.10.2013


Ответы (1)


Я предполагаю, что очистка строк сетки данных в каждом цикле - это не совсем то, что вам нужно. Вам необходимо переместить

 dg1.Rows.Clear()

перед циклом while. Кроме того, но это трудно вычислить из опубликованного кода, я думаю, что ваш Reader.SetFieldWidths(8, 8) неверен. Попробуйте с

Reader.SetFieldWidths(8, 9, -1)

TextFieldParser.SetFieldWidths

Затем в цикле вам нужно

' Add a new row
Dim curRowIndex = dg1.Rows.Add()
' Set the first cell of the new row....
dg1.Rows(curRowIndex).Cells(0).Value = currentRow(0)
dg1.Rows(curRowIndex).Cells(1).Value = currentRow(1)
dg1.Rows(curRowIndex).Cells(2).Value = currentRow(2) ' the remainder of the line
person Steve    schedule 13.10.2013
comment
Стив, моя проблема в dg1.rows.add(currentfield). Мне нужно иметь как currentfield(0), который является частью даты, так и currendfield(1), который является 2-м столбцом времени, поэтому он будет выглядеть так: dg1.rows .add(currentField(0),currentField(1) и т.д..), как я могу это сделать? - person Lebnani; 14.10.2013
comment
Я думаю, что он пытается, чтобы dg1.Rows(curRowIndex).Cells(0).Value было новым значением даты и времени, состоящим из currentRow(0) и currentRow(1) (??) - person Ňɏssa Pøngjǣrdenlarp; 14.10.2013
comment
Стив, ты спас мне ночь, большое спасибо, чувак, это то, что я искал :) - person Lebnani; 14.10.2013