Как импортировать содержимое/данные в текстовый файл с одним полем, используя чайник Pentaho?

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

Я планирую использовать измененные значения JavaScript для синтаксического анализа.

Примечание.
Файл, о котором я говорю, не является обычным текстовым или CSV-файлом. Это прямой файл, полученный от Tandem Server.
например: (Содержимое текстового файла)
'|08-Jul-16|1| 5996|W2266001|БОДХАН РОАДНИЗАМАБАД|FNFA|5211080013438979|******************|0220|01|7|07-июль-16|08-июль-16|23:14 :23|1043|000|00|541100|30000|0000|PRO1|FNFA|00000403362|356|356|0|НИЗ-220|НИЗАМАБАД|TS|IN||08-Jul-16|1| '


person Thangaraj Murugananthan    schedule 18.01.2017    source источник


Ответы (1)


Для этого вы можете использовать шаг «Загрузить содержимое файла в память».

Он делает именно то, что вы хотите, читает файлы в одно поле для каждого файла без разбора. Вместо того, чтобы указывать разделитель, вы вручную вводите данные поля. Выберите «содержимое файла» в качестве элемента и «строка» в качестве типа.

Я видел ваш другой вопрос. Если ваш файл имеет размер 1,7 ГБ, он, вероятно, не будет загружаться в одну строку без проблем с памятью.

Я тестировал с помощью:

этапы преобразования для разделения неструктурированного файла

  1. Загрузить файл в память, как описано выше
  2. Разбить поле на строки, используя "\|DR\|" как разделитель регулярных выражений
  3. Выберите значения, чтобы избавиться от исходного огромного поля
  4. Разделить поля, используя разделитель "|" в список строковых полей (столько, сколько могут иметь ваши записи).

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

person Cyrus    schedule 18.01.2017
comment
Поскольку файл не имеет верхнего и нижнего колонтитула, его содержимое не отображается. - person Thangaraj Murugananthan; 18.01.2017
comment
Вы можете вручную определить поле на вкладке полей, установить для элемента содержимое файла и тип строки. - person Cyrus; 18.01.2017
comment
Не могли бы вы проверить еще раз? Я изменил содержимое файла на строку и размер файла на int. Я не смог найти вариант установки поля Вручную. к вашему сведению, когда я пытаюсь просмотреть содержимое с помощью «предварительных строк», строки для предварительного просмотра не отображаются. - person Thangaraj Murugananthan; 18.01.2017
comment
Странный. Вставил ваш образец в файл, попробовал, работает. Вы пытаетесь использовать полный файл данных или файл, содержащий всего несколько строк? Кстати, у вас есть способ найти начало или конец записи? - person Cyrus; 18.01.2017
comment
Я пытаюсь с файлом, содержащим несколько строк. да, у него есть начало и конец. его можно разделить с помощью '|DR'. который можно использовать для поиска начала и конца записи. - person Thangaraj Murugananthan; 18.01.2017
comment
Я загрузил содержимое в текстовый файл, как вы сказали. Текстовый файл Ввод -----------› Загрузить содержимое файла в память. как я могу увидеть, правильно ли загружены данные? когда я нажимаю на предварительный просмотр, он ничего не показывает. кроме пустого имени поля. «содержимое файла и размер файла». - person Thangaraj Murugananthan; 19.01.2017
comment
Не используйте ввод текстового файла, шаг «Загрузить файл» — это первый шаг. Вот где вы указываете файлы для чтения - person Cyrus; 19.01.2017
comment
Хорошее решение. Он работает правильно. Но разве нам не нужны RegEx, как вы упомянули в заявлении? - person Thangaraj Murugananthan; 20.01.2017
comment
В разделе «Разделить поле на строки» есть флажок для обработки разделителя как регулярного выражения, хотя он может работать и без него, если шаг принимает |DR| как разделитель. - person Cyrus; 20.01.2017