CSV-данные со значениями запятой выдает ошибку при обработке файла через дизассемблер BizTalk Flatfile
Я собираюсь выбрать CSV-файл в BizTalk и после некоторого процесса я хотел обновить его с двумя или более различными системами.
Для того, чтобы получить файл CSV, я использую по умолчанию Flatfile Disassembler
за его нарушение и построение в виде XML с помощью сгенерированной схемы. Я могу сделать это успешно с некоторыми непротиворечивыми данными, однако, если я использую данные с запятой (кроме разделителей), BizTalk завершится неудачно!
Любой другой способ сделать это без использования пользовательского компонента конвейера? Ожидается простая конфигурация внутри компонента дизассемблера плоского файла!
2 ответа
Итак, вот сделка. BizTalk не выходит из строя. Ну, это так, но это ожидаемое и правильное поведение.
Что у вас в недействительном файле CSV. Спецификация CSV запрещает использование запятой в полевых данных, если только не используется символ переноса. В любом случае, оба являются зарезервированными символами.
Чтобы принять запятую в полевых данных, вы должны выбрать символ переноса и установить его в свойстве Символ переноса в схеме плоского файла.
Это действительно:
01.01.01,"Смит, Джон", $5000
Это не:
1/1/01, Смит, Джон, $ 5000
Поскольку определение вашей схемы имеет разделитель ",", дизассемблер плоских файлов будет рассматривать данные с запятой как два поля и потерпит неудачу из-за несоответствия в столбцах. У вас есть несколько вариантов:
- Либо добавьте новое поле в схему, если вы знаете, что данные будут присутствовать только в определенном поле.
- Или измените разделитель в плоском файле с, на |(труба) или какой-либо другой символ, чтобы данные не конфликтовали с разделителем.
- Или, как вы упомянули, манипулируйте плоским файлом в пользовательском конвейерном компоненте, который должен быть последним средством, если выше двух невозможно.