Поддержка многострочных значений

При импорте из текстового файла допускаются многострочные значения. Если значение строкового типа данных, обрамленное кавычками, содержит символы перевода строки, то оно будет импортировано как единая строка, а не отдельными значениями.

К символам перевода строк относятся:

  • Для 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}

В том случае, если кавычка является экранированной или стоит после закрывающей кавычки, то она не будет считаться за символ ограничения строк. Если в начале строки перед кавычкой стоит какой-либо символ (в том числе и пробел), то все кавычки в строке становятся игнорируемыми.

Примечание: при экспорте в текстовый файл многострочное значение будет разбито на отдельные строки.