读取大文件时 ssis 脚本任务 (vb) 出现问题
ssis script task (vb) issues when reading large file
我在 ssis 脚本任务中使用以下代码来修改文件的内容。我基本上是在创建 1 个 json 文档,而文件中有许多 json,一个接一个。
这段代码可以完美运行,直到大约 1GB 的文件(读取 1GB 的文件它在 SSIS 中使用了近 7GB 的内存),之后它崩溃了(我假设是由于内存)。我需要读取最大 5GB 的文件。
请帮忙
Public Sub Main()
Dim filePath As String = Dts.Variables("User::filepath").Value.ToString()
Dim content As String = File.ReadAllText(filePath).Replace("}", "},")
content = content.Substring(0, Len(content) - 1)
content = "{ ""query"" : [" + content + "] }"
File.WriteAllText(filePath, content)
Dts.TaskResult = ScriptResults.Success
End Sub
不建议使用File.ReadAllText(filePath)
读取大的平面文件,因为它会将所有内容存储在内存中。我认为你应该使用一个简单的数据流任务将数据从这个平面文件传输到一个新的平面文件,你可以在每一行的脚本组件中进行你需要的转换。
您还可以使用 StreamReader
在脚本中逐行读取它并使用 StreamWriter
将其写入新文件,完成后您可以删除第一个文件,然后重命名新的。
参考资料
- How to open a large text file in C#
- File System Read Buffer Efficiency
- c# - How to read a large (5GB) txt file in .NET?
我在 ssis 脚本任务中使用以下代码来修改文件的内容。我基本上是在创建 1 个 json 文档,而文件中有许多 json,一个接一个。 这段代码可以完美运行,直到大约 1GB 的文件(读取 1GB 的文件它在 SSIS 中使用了近 7GB 的内存),之后它崩溃了(我假设是由于内存)。我需要读取最大 5GB 的文件。
请帮忙
Public Sub Main()
Dim filePath As String = Dts.Variables("User::filepath").Value.ToString()
Dim content As String = File.ReadAllText(filePath).Replace("}", "},")
content = content.Substring(0, Len(content) - 1)
content = "{ ""query"" : [" + content + "] }"
File.WriteAllText(filePath, content)
Dts.TaskResult = ScriptResults.Success
End Sub
不建议使用File.ReadAllText(filePath)
读取大的平面文件,因为它会将所有内容存储在内存中。我认为你应该使用一个简单的数据流任务将数据从这个平面文件传输到一个新的平面文件,你可以在每一行的脚本组件中进行你需要的转换。
您还可以使用 StreamReader
在脚本中逐行读取它并使用 StreamWriter
将其写入新文件,完成后您可以删除第一个文件,然后重命名新的。
参考资料
- How to open a large text file in C#
- File System Read Buffer Efficiency
- c# - How to read a large (5GB) txt file in .NET?