CSV-данные со значениями запятой выдает ошибку при обработке файла через дизассемблер BizTalk Flatfile

Я собираюсь выбрать CSV-файл в BizTalk и после некоторого процесса я хотел обновить его с двумя или более различными системами.

Для того, чтобы получить файл CSV, я использую по умолчанию Flatfile Disassembler за его нарушение и построение в виде XML с помощью сгенерированной схемы. Я могу сделать это успешно с некоторыми непротиворечивыми данными, однако, если я использую данные с запятой (кроме разделителей), BizTalk завершится неудачно!

Любой другой способ сделать это без использования пользовательского компонента конвейера? Ожидается простая конфигурация внутри компонента дизассемблера плоского файла!

2 ответа

Решение

Итак, вот сделка. BizTalk не выходит из строя. Ну, это так, но это ожидаемое и правильное поведение.

Что у вас в недействительном файле CSV. Спецификация CSV запрещает использование запятой в полевых данных, если только не используется символ переноса. В любом случае, оба являются зарезервированными символами.

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

Это действительно:

01.01.01,"Смит, Джон", $5000

Это не:

1/1/01, Смит, Джон, $ 5000

Поскольку определение вашей схемы имеет разделитель ",", дизассемблер плоских файлов будет рассматривать данные с запятой как два поля и потерпит неудачу из-за несоответствия в столбцах. У вас есть несколько вариантов:

  • Либо добавьте новое поле в схему, если вы знаете, что данные будут присутствовать только в определенном поле.
  • Или измените разделитель в плоском файле с, на |(труба) или какой-либо другой символ, чтобы данные не конфликтовали с разделителем.
  • Или, как вы упомянули, манипулируйте плоским файлом в пользовательском конвейерном компоненте, который должен быть последним средством, если выше двух невозможно.
Другие вопросы по тегам