Верблюд CSVRecord Верблюд Бинди
Я использую верблюда с bindy (2.16.0) для разбора файла CSV. Файл содержит верхний и нижний колонтитулы. Оба используются в качестве метаданных для описания общих данных для всех других записей. (Клиент определен, поэтому я не могу изменить формат CSV)
Я использую Бинди, чтобы разобрать данные для меня. Проблема в том, что для CSVRecord нельзя исключать нижний колонтитул. Я могу пропустить заголовок, но анализ данных не удается, потому что он не может проанализировать нижний колонтитул, поскольку формат данных отличается.
Есть ли способ исключить последнюю строку / нижний колонтитул из bindy CSVRecord или, может быть, верблюд прочитал и удалил последнюю строку другим способом?
2 ответа
Нет, в настоящее время это не поддерживается в bindy. Является ли нижний колонтитул в вашем случае только одной строкой? Или у него есть какой-нибудь специальный ведущий маркер, чтобы указать его нижний колонтитул?
Возможно, мы могли бы улучшить Bindy для поддержки пропуска нижнего колонтитула. Так что, возможно, нижний колонтитул по умолчанию это просто последняя строка. Но просто интересно, могут ли люди иметь несколько строк в нижнем колонтитуле?
Вам нужно будет вручную удалить эту последнюю строку, прежде чем анализировать ее с помощью bindy. Если файл не большой, и вы можете хранить его в памяти, вы можете использовать процессор / компонент Camel и удалить последнюю строку из тела сообщения.
Вы можете рассмотреть альтернативное решение:
- Возьми CSV у клиента
- Предварительно обработайте csv с помощью шага очистки: проанализируйте header/fooder и уберите его с пути. Но соберите общие параметры, чтобы вы могли обогатить другие объекты.
- Разобрать оставшуюся часть "чистого CSV" через bindy, а затем обогатить обычным колонтитулом