Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 读取大文件时ssis脚本任务(vb)问题_Sql Server_Vb.net_Ssis_Etl_Script Task - Fatal编程技术网

Sql server 读取大文件时ssis脚本任务(vb)问题

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()

我在ssis脚本任务中使用以下代码来修改文件的内容。我基本上是在文件中有许多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
将其写入新文件,完成后可以删除第一个文件并重命名新文件

参考资料


StreamReader/Writer是解决方案