我有很大的.txt文件,我的网络应用每天产生大约500MB,它连续有21个字段,每个字段中用竖线字符 | 分隔,它有200多万行在里面。 对于速度情况,我按输入文件大小拆分输入文件,现在需要按字符分支字段拆分,我将要添加这个新字段。
'previous header
Date|Field_2|Field_3|Field_4|Field_5|Field_6|Field_7|Field_8|Field_9|Field_10|Field_11|Field_12|Field_13|Field_14|Field_15|Field_16|Field_17|Field_18|Field_19|Field_20|
'after add branch field
Date|Branch|Field_2|Field_3|Field_4|Field_5|Field_6|Field_7|Field_8|Field_9|Field_10|Field_11|Field_12|Field_13|Field_14|Field_15|Field_16|Field_17|Field_18|Field_19|Field_20|
'i used to split use this code:
'got the script from http://prabhuram.com/articles/2012/02/28/splitting-large-files-using-vbscript/
Dim Counter
Const InputFile = "C:\input.txt"
Const OutputFile = "C:\output"
Const RecordSize = 1000000
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile (InputFile, ForReading)
Counter = 0
FileCounter = 0
Set objOutTextFile = Nothing
Do Until objTextFile.AtEndOfStream
if Counter = 0 Or Counter = RecordSize Then
Counter = 0
FileCounter = FileCounter + 1
if Not objOutTextFile is Nothing then objOutTextFile.Close
Set objOutTextFile = objFSO.OpenTextFile( OutputFile & "_" & FileCounter & ".txt", ForWriting, True)
end if
strNextLine = objTextFile.Readline
objOutTextFile.WriteLine(strNextLine)
Counter = Counter + 1
Loop
objTextFile.Close
objOutTextFile.Close
Msgbox "Done..."
代码通过拆分每个RecordSize = 1000000行100%工作,现在我希望通过为分支报告添加新字段(Branch)并根据分支代码将大文件拆分为单独的输出文件进行一些改进(示例分支代码: AAA,BBB,CCC,DDD等)。 输入文件已按分支排序,因此脚本中不需要更多排序/顺序过程。
一个巨大的.txt文件 - >基于分支代码单独的.txt文件和输出文件将是它自己的分支代码。 (表示:AAA.txt等等。)。
任何想法,我如何使用VBscript实现这一目标?
答案 0 :(得分:1)
您需要写入分支代码标识的多个文件。我可能会使用字典来管理它们,例如像这样:
...
Set outFiles = CreateObject("Scripting.Dictionary")
Do Until objTextFile.AtEndOfStream
line = objTextFile.ReadLine
branchCode = Split(line, "|")(1)
If Not outFiles.Exists(branchCode) Then
outFiles.Add branchCode, fso.OpenTextFile(outputFile _
& "_" & branchCode & ".txt", ForWriting, True)
End If
outFiles(branchCode).WriteLine line
Loop
For Each branchCode In outFiles.Keys
outFiles(branchCode).Close
Next
...
根据需要调整输出文件的名称。