0

У меня есть плоский файл с не фиксированной структурой какразделители файлов вопросы

name,phone_num,Address 
bob,8888,2nd main,5th floor,avenue road 

Здесь последний столбец Address имеет значение 2nd main,5th floor,avenue road но так же разделители , используется для разделяющей колонки также я не получаю любой ключ, как справиться с этим.

Структура плоского файла может измениться из файла в файл. Как обращаться с такими плоскими файлами при импорте с использованием Informatica or SQL * Loader or UTL Files

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

+1

Используйте escape-символ, например '' '. Настройте загрузчик для использования этого escape-символа. – Rachcha

+0

@ Rachcha U означает указать escape-символ в 'control file', я могу это сделать, если знаю позицию столбца, который получает данные в таком формате !! но позиция столбцов динамическая – Aspirant

ответ

5

Использование SQLLoader

load data 
append 
into table schema.table 
fields terminated by '~' 
trailing nullcols 
(
    line  BOUNDFILLER, 
    name  "regexp_substr(:line, '^[^,]+')", 
    phone_num "regexp_substr(:line, '[^,]+', 1, 2)", 
    Address "regexp_replace(:line, '^.*?,.*?,')" 
) 
+1

И вот я, написав длинное объяснение, как это сделать, используя UTL_FILES и кучу уродливого, грязного кода, когда я это увидел. Отличный ответ - и это спасло меня, закончив мой слишком длинный слишком грязный ответ! –

+0

dont вы имеете в виду «поля, заканчивающиеся на«, », будет ли он по-прежнему работать с регулярным выражением? – Gyan

+0

@Raghav - '~' может быть заменен любым символом, который не встречается внутри файла данных. –

0

вам нужно изменить исходный файл вложить поля в экранирующего символа, например:

name,phone_num,Address 
bob,8888,^2nd main,5th floor,avenue road^ 

затем в SQL-загрузчика вы бы поставил:

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^' 

просто выбрать разделитель, который обычно не отображается в ваших данных.

+0

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

0

Если бы вы могли получить исходные данные, заключенные в двойные кавычки (или любые кавычки на то пошло), вы можете использовать опцию «Необязательные ЦИТАТЫ» в Informatica при чтении из плоского файла

Смежные вопросы