Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SSIS как почистить .txt файл  [new]
Santa89
Member

Откуда:
Сообщений: 1499
Имеется пакет, который сканирует содержимое папки на наличие текстовых файлов определенного формата с разделителями.
Проблема в том, что у некоторых файлов в самом начале имеется пустая строчка или даже две или три, в результате источник FlatFile Source для каких то файлов отрабатывает нормально, для каких-то выдает ошибку - Error while skip rows in datasource. Даже если в его свойствах буду ставить DataRowsToSkip = 0 и HeaderRowsToSkip = 0. Как мне обойти эту ошибку?

Что если каждый текстовый файл в начале пакета проверять на наличие первых пустых строк и с помошью ScriptComponent удалять эти пустые строки, перезаписать файл и затем уже дальше пускать в пакет с нормальным форматом уже без пробелов?
21 ноя 13, 03:46    [15165783]     Ответить | Цитировать Сообщить модератору
 Re: SSIS как почистить .txt файл  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Santa89
Что если каждый текстовый файл в начале пакета проверять на наличие первых пустых строк и с помошью ScriptComponent удалять эти пустые строки, перезаписать файл и затем уже дальше пускать в пакет с нормальным форматом уже без пробелов?
Ну, а в чем сомнения?
21 ноя 13, 06:20    [15165821]     Ответить | Цитировать Сообщить модератору
 Re: SSIS как почистить .txt файл  [new]
Santa89
Member

Откуда:
Сообщений: 1499
tpg,

вобще думал, что можно проще, но решил проблему именно таким способом.
Кому интересно - вот код скрипта (удаляет все пустые строки в файле)


    Dim file As String
        file = Dts.Variables("FileVariable").Value.ToString


        Const ForReading = 1
        Const ForWriting = 2

        Dim objFSO = CreateObject("Scripting.FileSystemObject")
        Dim objFile = objFSO.OpenTextFile(file, ForReading)
        Dim strLine, strNewContents As String


        Do Until objFile.AtEndOfStream
            strLine = objFile.Readline
            strLine = Trim(strLine)
            If Len(strLine) > 0 Then
                strNewContents = strNewContents & strLine & vbCrLf
            End If
        Loop

        objFile.Close()

        objFile = objFSO.OpenTextFile(file, ForWriting)
        objFile.Write(strNewContents)
        objFile.Close()

        Dts.TaskResult = ScriptResults.Success


Сообщение было отредактировано: 21 ноя 13, 08:59
21 ноя 13, 08:23    [15165941]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить