Чтение и разделение файла CSV с помощью Talend

CSV-файл содержит более одной таблицы, это может выглядеть так:

 "Table 1"
 ,
 "id","visits","downloads","emailsent"
  1, 4324, 23, 2
  2, 664, 42, 1
  3, 73, 44, 0
  4, 914, 8, 0
  ...

 "Table 2"
 ,
 "id_of_2nd_tab","visits_of_2nd_tab","downloads_of_2nd_tab"
  1, 524, 3
  2, 564, 52
  3, 63, 84
  4, 814, 8
  ...

Как лучше всего импортировать эти таблицы в Talend?


person justSaid    schedule 04.11.2015    source источник


Ответы (2)


Как правило, формат CSV с несколькими записями более сложен для синтаксического анализа.

Вопрос: Существует ли конечное количество таблиц? Вопрос: Каждая таблица имеет фиксированное количество и порядок столбцов? Вопрос: Что такое разделитель между «таблицами» в CSV?

Я считаю, что вам нужно использовать многопроходный подход. Вы могли бы сделать что-то вроде этого.

Проход № 1 — Используйте tFileInputDelimited Используйте разделитель строк, такой как «Таблица», без разделителя полей, захватите 1 большое поле В качестве альтернативы вы можете разделить первый файл на отдельные файлы на этом этапе.

Проход № 2 — Разделить строку (по результатам прохода № 1) на разделителе строк «\ r \ n» и т. Д. Разделить ее на несколько строк, но из одного столбца.

Проход №3 — Извлечение полей с разделителями (по результатам прохода №2) Извлечение на основе разделителя полей Распознавание строки «Таблица» Распознавание строки «Заголовок» Дополнительная обработка таблицы/набора полей в заголовке

person dbh    schedule 09.12.2015
comment
да, есть конечное количество таблиц. Но количество строк не фиксировано. Разделитель - две новые строки - person justSaid; 14.12.2015
comment
Таким образом, первым шагом является чтение файла (определить как 1 столбец в схеме Talend) и использовать две новые строки в качестве разделителя. Это даст вам две строки данных. Теперь каждая строка представляет собой отдельную таблицу. Каковы Ваши дальнейшие действия? - person dbh; 16.12.2015

Используйте компонент tFileInputExcel для чтения каждого рабочего листа. Затем вы можете использовать tMap для объединения рабочих листов в макет целевого столбца, предполагая, что вы хотите выполнить некоторую обработку объединенного набора столбцов.

person PatVictorio    schedule 08.11.2015
comment
Я хочу разделить файлы CSV, а не файлы Excel - person justSaid; 12.11.2015
comment
Для csv используйте компонент tFileInputDelimited. - person PatVictorio; 13.11.2015
comment
Да, я знаю, но как разделить CSV-файл, если в нем более одной таблицы? - person justSaid; 16.11.2015