Как избежать кавычек и разрывов строк для импорта Oracle SQLLoader (sqlldr)?

ПЕРВЫЙ: Да, я знаю о CONCATENATE и CONTINUEIF, но, возможно, я недостаточно умен, чтобы понять документацию. Я не "понимаю", как они решают мою проблему. Спасибо...

Мне нужно создать файл для импорта в базу данных Oracle с помощью sqldr.

Столбцы должны быть разделены символом «~» (не спрашивайте.) При создании файла файла у меня есть несколько опасений по поводу того, как sqldr ведет себя в отношении кавычек и новых строк.

Если простая строка должна содержать значения столбца:

One, Hello~World I "Like" you, and Three

Как мне вывести это в файл? Моя первая догадка

One~"Hello~World I "Like" you"~Three

Я предполагаю, что было бы легко импортировать с ПОЛЯМИ, ЗАКРЫТЫМИ "~" НЕОБЯЗАТЕЛЬНО ЗАКРЫТЫМИ '"', указанными в файле CTL. Что я не знаю, как обрабатывать, так это кавычки вокруг лайка при создании файла. Должны ли они быть дополнительно экранированы?

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

one~Line
Break~three

Есть ли в файле CTL опция, которую я могу использовать, чтобы «сшить» их вместе? Разрыв может происходить в разных столбцах, и может быть более одного разрыва на запись или столбец.

Заранее спасибо!


person DrFloyd5    schedule 24.06.2009    source источник


Ответы (1)


После некоторых экспериментов я обнаружил следующее:

При использовании

FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"' 

в файле CTL и структуру таблицы

key:number, msg:varchar2

Правильный способ обработки кавычек и разделителей:

1~Hello World
2~"Hello~World"
3~"Hello ""World"""
4~"Hello~""World"""

Итак, если данные содержат разделитель, укажите все значение и замените кавычки в значении двумя кавычками.

Что касается новых строк, я собираюсь задать это в другом вопросе.

person DrFloyd5    schedule 26.06.2009