Поддержка многострочных значений
При импорте из текстового файла допускаются многострочные значения. Если значение строкового типа данных, обрамленное кавычками, содержит символы перевода строки, то оно будет импортировано как единая строка, а не отдельными значениями.
К символам перевода строк относятся:
- Для UTF-16 LE: WideCRLF, WideCR, WideLF, WideVT, WideFF, WideLS, WidePS. Аналогично для UTF-16 BE.
- Для UTF-8: CRLF, CR, LF.
- Для остальных 8-битных Ansi-кодировок то же, что для UTF-8, но символ LF может отличаться. Конкретное значение определяется через конвертирование WideCRLF в нужную кодировку.
Символы перевода не становятся частью обычных строк, но в мультистроке они добавляются к её строкам, кроме последней.
Для возможности импорта многострочных значений необходимо в настройке форматов импорта указать Ограничитель строк. В качестве символа ограничителя строк можно выбрать один из выпадающего списка. Также его можно задать самостоятельно, при этом допустимыми значениями могут быть латинские буквы, цифры и спецсимволы (!, #, @ и т.д.).
Ограничение по длине строки
Для строки существует ограничение по длине — символа. При чтении более длинного многострочного значения последней строкой, вошедшей в мультистроку, будет та, на которой предел символов был превышен. Следующие строки будут добавляться отдельными значениями. При этом узел не будет завершаться ошибкой, а в лог будет записано соответствующее сообщение.
2022-12-27T10:24:10.580 warn (loginomd.exe:5372>user:1:) - При разборе текстового файла мультистрока превысила максимальную длину раньше, чем найден закрывающий ограничитель строк.{"Максимальная длина мультистроки": 4194304, "Номер строки файла с началом мультистроки": 2, "Последняя строка файла, вошедшая в мультистроку": 1847}
Подсчет числа кавычек
Если в пользовательских данных будет найдена непарная кавычка, то при разборе файла эта ситуация обрабатывается следующим образом:
- если непарная кавычка стоит в начале строки, то лишняя часть файла запишется в одну ячейку;
- если непарная кавычка стоит не в начале строки, то такая строка будет разобрана правильно, без ошибок.
Информация о том, что не был найден закрывающий ограничитель строк, будет записана в логи.
2022-12-27T10:24:10.586 warn (loginomd.exe:5372>user:1:) - Конец текстового файла достигнут раньше, чем найден закрывающий ограничитель строк.{"Номер строки файла с началом мультистроки": 1867}
В том случае, если кавычка является экранированной или стоит после закрывающей кавычки, то она не будет считаться за символ ограничения строк. Если в начале строки перед кавычкой стоит какой-либо символ (в том числе и пробел), то все кавычки в строке становятся игнорируемыми.
Примечание: при экспорте в текстовый файл многострочное значение будет разбито на отдельные строки.