Проблемы с скриптом ssis (vb) при чтении большого файла - PullRequest
0 голосов
/ 01 июня 2018

Я использую приведенный ниже код внутри задачи скрипта ssis для изменения содержимого файла.Я в основном создаю 1 json документ, когда в файле много jsons, один за другим.Этот код прекрасно работает до тех пор, пока не будет файла размером около 1 ГБ (для чтения файла размером 1 ГБ он использует почти 7 ГБ памяти в SSIS), после этого происходит сбой (я полагаю, из-за памяти).Мне нужно читать файлы до 5 ГБ.

Любая помощь, пожалуйста

   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

1 Ответ

0 голосов
/ 03 июня 2018

Не рекомендуется использовать File.ReadAllText(filePath) для чтения больших плоских файлов, поскольку он будет хранить весь контент в памяти.Я думаю, что вы должны использовать простую задачу потока данных для переноса данных из этого плоского файла в новый плоский файл, и вы можете выполнить необходимые преобразования в компоненте скрипта в каждой строке.

Также вы можете прочитатьстрока за строкой в ​​скрипте, используя StreamReader, используя и записываете его в новый файл, используя StreamWriter, когда вы закончите, вы можете удалить первый файл и переименовать новый.

Список литературы

...