Я нашел эти связанные темы, но они не дают прямого ответа на мой вопрос:
BizTalk - плоский файл с несколькими записями заголовка и нижним колонтитулом - Разобрать проблему
Удаление заголовка из плоского файла в BizTalk
Я имею дело со старой системой, которая предоставляет плоские файлы с очень свободной схемой. В частности, заголовок состоит из двух строк: первая строка - это заголовок, а вторая строка - заголовки столбцов. Все последующие строки являются действительными записями.
Проблема в том, что при отсутствии записей за этот день заголовки столбцов опускаются; в этом случае у нас есть заголовок документа, а затем итоговая строка (для потребления человеком), которая уведомляет читателя об отсутствии записей за этот день.
Поскольку один и тот же файл может иметь такие разные форматы, мне трудно создать схему заголовка, которую я могу использовать в моем конвейере приема плоских файлов, который позволит мне удалить информацию заголовка. Кроме того, поскольку заголовок состоит из нескольких строк, похоже, что я не могу просто использовать разделитель возврата каретки.
Я пробовал два подхода к этому:
- Схема заголовка, содержащая два элемента поля, разделенных символом возврата каретки, каждый из которых является непрозрачной строкой.
- Схема заголовка, содержащая две записи с разделителями и возвратом каретки, каждая из которых определяет фиктивный инфиксный разделитель, который никогда не будет существовать ни в одной строке (что приводит к одной непрозрачной строке на запись)
Однако, когда я их развертываю, BizTalk будет собирать файлы и обрабатывать их, однако на самом деле это не приводит к появлению каких-либо сообщений. Это наводит меня на мысль, что BizTalk обрабатывает мои плоские файлы так, как будто весь файл является заголовком, поэтому он не находит никаких записей.
Решение, которое я пытаюсь найти, заключается в том, как создать схему заголовка, которая заставляет BizTalk обрабатывать первые две строки файла как заголовок, независимо от их содержимого, и отбрасывать их. Это возможно?
РЕДАКТИРОВАТЬ: Примеры различных файлов:
Записи существуют:
2017-02-27 19:27:03
CustomerName, OrderNumber, Expedite, ItemNumber, Count
CustomerA, O196801, 0, I232, 2
CustomerA, O196801, 0, I255, 1
CustomerB, O196802, 0, I237, 1
CustomerC, O196803, 0, I214, 1
CustomerC, O196803, 0, I232, 2
В этом файле нет записей:
2017-02-27 19:30:22
***EOF***
- Первая строка всегда одна и та же, и ее можно описать записью с позиционными разделителями.
- Вторая строка - это либо список имен столбцов, разделенных запятыми, либо строка EOF.
- EOF отображается только при отсутствии записей.
В настоящее время я могу обрабатывать файлы с записями, только определяя разделитель между схемами заголовка и документа как всю строку заголовка столбца, т.е. CustomerName, OrderNumber, Expedite, ItemNumber, Count{CR}{LF}
Однако эта схема заголовка не работает для пустого файла, когда он находит ***EOF***
вместо строки заголовка столбца .