Sql server 读取大文件时ssis脚本任务(vb)问题
我在ssis脚本任务中使用以下代码来修改文件的内容。我基本上是在文件中有许多json时创建一个json文档,一个接一个。 这段代码在1GB文件(要读取1GB文件,它在SSIS中使用了几乎7GB的内存)之前都可以正常工作,但在这段代码崩溃之后(我假设是内存问题)。我需要把文件读到5GB 需要帮忙吗Sql server 读取大文件时ssis脚本任务(vb)问题,sql-server,vb.net,ssis,etl,script-task,Sql Server,Vb.net,Ssis,Etl,Script Task,我在ssis脚本任务中使用以下代码来修改文件的内容。我基本上是在文件中有许多json时创建一个json文档,一个接一个。 这段代码在1GB文件(要读取1GB文件,它在SSIS中使用了几乎7GB的内存)之前都可以正常工作,但在这段代码崩溃之后(我假设是内存问题)。我需要把文件读到5GB 需要帮忙吗 Public Sub Main() Dim filePath As String = Dts.Variables("User::filepath").Value.ToString()
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
将其写入新文件,完成后可以删除第一个文件并重命名新文件
参考资料