Как прочитать текстовый файл и вставить в базу данных - PullRequest
0 голосов
/ 08 мая 2019

У меня много текстового файла с содержанием ниже:

LOG_NAME=LOGX1245;
LOT_NO=NA;
STEP=NA;
NO=CS84E869500115;
TIME_START=20190506 094715;
TIME_END=20190506 094715

Мне нужно прочитать текстовый файл и вставить в базу данных.Имя столбца - это первое поле, а значение - второе поле.Как прочитать текстовый файл и вставить каждую из строк в базу данных?

Что я делаю:

For Each file In fso.GetFolder("C:\Data").Files
    Set otf = objFSO.OpenTextFile(file, 1)
    Do Until otf.AtEndOfStream
        line = otf.ReadLine

        If Mid(line, 1, 12) = "LOG_NAME" Then
            datalog = Trim(Split(line, "=")(1))
        End If

        If Mid(line, 1, 10) = "LOT_NO" Then
            PT = Trim(Split(line, "=")(1))
        End If

        If Mid(line, 1, 4) = "STEP" Then
            TestStep = Trim(Split(line, "=")(1))
        End If

        If Mid(line, 1, 11) = "NO" Then ...
    Loop
    otf.Close
Next

Здесь я хочу сделать запрос.Как запросить оператор SQL INSERT на основе значения, которое я получаю из текстового файла?Есть ли более простой способ?

Dim query
Set rsObj = CreateObject("ADODB.Recordset")

query = "Insert in"

On Error Resume Next
rsObj.Open query, connObj

1 Ответ

0 голосов
/ 08 мая 2019

Попробуйте следующий код

    Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Desktop\Data.accdb"

For Each objFile In objFSO.GetFolder("C:\Users\Desktop\Data").Files
    Set objDataFile = objFSO.OpenTextFile(objFile.Path, 1)
    arrData = Split(objDataFile.ReadAll, vbNewLine) 'store file data in array
    objDataFile.Close

    varValues = Empty: varFields = Empty
    For i = LBound(arrData) To UBound(arrData)
        arrRowData = Split(arrData(i), "=")
        varFields = varFields & "[" & arrRowData(0) & "]," 'square bracket to avoid reserve keyword as field name
        arrRowData(1) = Left(arrRowData(1), Len(arrRowData(1)) - 1) 'remove last semicolon
        varValues = varValues & "'" & arrRowData(1) & "',"
    Next
    varFields = Left(varFields, Len(varFields) - 1) 'remove last comma
    varValues = Left(varValues, Len(varValues) - 1) 'remove last comma
    objConn.Execute "INSERT INTO Data(" & varFields & ") VALUES(" & varValues & ")"
Next

Set objFSO = Nothing
objConn.Close
Set objConn = Nothing

Я использовал Access DB для проверки кода.Кроме того, я предположил, что текстовые файлы в папке «Данные» похожи и содержат только данные, подходящие для вставки базы данных.

БД перед запуском кода

enter image description here

БД после запуска кода

enter image description here

Я проверил с двумя текстовыми файлами в папке Data.

...