Я пытаюсь загрузить файл CSV со сцены в таблицу, которую я создаю из содержимого файла. Я создал формат файла с типом CSV и настройками, которые, по моему мнению, должны делиться на ',' и использовать '' 'в качестве возможного переноса строковых полей. Но поля все равно снова разделяются, если само содержимое содержитa ','. Кажется, что field_optionally_enclosed_by arg должен обрабатывать это, но это не так.
Вот мое определение формата файла:
create or replace file format mycsvformat
type = csv
field_delimiter = ','
skip_header = 1
field_optionally_enclosed_by = '"'
null_if = 'NULL'
EMPTY_FIELD_AS_NULL = TRUE;
Вот пример данных:
"ColumnA","ColumnB","ColumnC","ColumnD","ColumnE","ColumnF"
"01/01/2019 12:00:03 AM","",Some - Text, Some other text - 1234567890","","",Some more text"
"01/01/2019 12:00:03 AM","",Some - Text, Some other text - 1234567890","","",Some more text"
Вот инструкция создания таблицы:
create or replace temp table mycsvtable as select t.$1 ColumnA, t.$2 ColumnB, t.$3 ColumnC from @myteststage/mycsvfile.csv (file_format => mycsvformat) t;
Когда я окончательно выбираю все данные из таблицы, она разбивается на 7 столбцов с помощью:
- 01/01/2019 12:00:03
Некоторые - Текст
- Некоторые другиетекст - 1234567890 "
" Еще текст "
Что мне здесь не хватает? Кажется, что формат файла, который я настроил, должен обрабатывать поля как целые строки, и я бы предположил, что это означает, что не нужно разделять поле на разделитель «,». Но я не вижу другого формата файла arg, чтобы исправить это здесь.
Редактировать: Расширен пример данных и добавлен EMPTY_FIELD_AS_NULL в формат создания файла. Это должно провалиться, как я и ожидал. Я вижу еще несколько вариантов, когда даже символ кавычки сохраняется в выводе, но я пытаюсь санировать набор данных для публикации.