У меня есть файл с разделителями трубы, и мне нужно написать с CR LF's - PullRequest
2 голосов
/ 22 июня 2011

У меня был текстовый файл размером 100 МБ с разделителем каналов, с разделителями записей CR LF.Проблема в том, что одно из полей было произвольным текстом и включало CRLF в поле.Мне нужно загрузить данные в SQL, но, конечно, CRLF испортили это.

Я заменил все CRLF на шестнадцатеричное значение FF FE, но теперь мне нужно прочитать разделители каналов подсчета файлов и вставить CRLF после последнего поля.

Мне нужно сосчитать семь разделителей канала, тогда последнее поле - это 24-байтовое поле даты, в которое мне нужно будет вставить CRLF.

Мысли о лучшем способе сделать это?

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Я не проверял это, но в любом случае это может поставить вас на правильный путь.

Dim b1 As Byte
Dim i As Long

' Open file in Binary mode (since you have at least one binary field)
Open "MyFile.dat" For Binary As #1

Do
    ' Advance to 7th | character from here
    For i = 1 To 7
        Do
            Get #1, , b1
            If b1 = 124 Then ' If Chr(b1) = "|" is perhaps more readable
                ' It's a "|" pipe
                Exit Do
            End If
        Loop
    Next i

    'Skip the 24-byte field
    Seek #1, Seek(1) + 24

    If EOF(1) Then
        ' We're all done
        Exit Do
    End If

    ' Record presumably ends here.
    ' Replace the next two bytes with the CR LF record delimiter
    Put #1, , CByte(10) ' CR
    Put #1, , CByte(13) ' LF
    ' Hopefully those were your hex FF and FE that just got overwritten. 
    ' Should really test for this before overwriting, 
    ' but what the heck.
Loop

Close #1

РЕДАКТИРОВАТЬ Только что проверил.Это в значительной степени работает.Тем не менее, при чтении в текстовом режиме предполагается кодировка DOS.

0 голосов
/ 23 июня 2011

если у вас есть целая вещь в памяти в переменной, вы можете использовать split как myArray = split (var, "|"). Затем вы можете просто объединить от 0 до 6 и добавить туда crlf и продолжить до концастрока

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...