如何读取文本文件并插入数据库
How to read text file and insert to database
我有很多文本文件,内容如下:
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
试试下面的代码
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 数据库来测试代码。另外,我假设数据文件夹中的文本文件是相似的,它们只包含适合数据库插入的数据。
数据库在运行代码
之前
运行 代码
之后的数据库
我测试了 Data 文件夹中的 2 个文本文件。
我有很多文本文件,内容如下:
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
试试下面的代码
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 数据库来测试代码。另外,我假设数据文件夹中的文本文件是相似的,它们只包含适合数据库插入的数据。
数据库在运行代码
之前运行 代码
之后的数据库我测试了 Data 文件夹中的 2 个文本文件。