Выгрузить CSV из снежинки, где только ненулевые заключены в кавычки

Я пытаюсь выгрузить CSV-файл из Snowflake, в котором указаны только ненулевые значения, заключенные в двойные кавычки.

Вот моя таблица

|BizName        |BizOwner      |
|----------+-------------------|
| "NiceOne" LLC | Robert       |
| GoodRX        |              |
| MaxLift       | Brian        |
| P,N and B     | Jane         |
+----------+--------------------

Вот мой желаемый результат -

"""NiceOne"" LLC","Robert","GoodRX",,"Maxift","Brian","P,N and B","Jane"

Вот 2 примера форматов, которые я пробовал

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

create or replace file format formatA
    COMPRESSION = GZIP
    RECORD_DELIMITER = ','
    SKIP_HEADER = 1
    FIELD_DELIMITER =  NONE
    FILE_EXTENSION = 'csv'
    ESCAPE =  NONE
    ESCAPE_UNENCLOSED_FIELD = NONE 
    FIELD_OPTIONALLY_ENCLOSED_BY = '"'
    NULL_IF = ( '','NULL' , 'null' , '""' )
    EMPTY_FIELD_AS_NULL = TRUE
    copy into @mytablestage from mytable FILE_FORMAT = ( FORMAT_NAME = 'formatA' ) ON_ERROR = CONTINUE

Я пробовал формат ниже, в котором ничего не заключено в кавычки

create or replace file format formatB
    COMPRESSION = GZIP
    RECORD_DELIMITER = ','
    SKIP_HEADER = 1
    FIELD_DELIMITER =  NONE
    FILE_EXTENSION = 'csv'
    ESCAPE =  NONE
    ESCAPE_UNENCLOSED_FIELD = NONE 
    NULL_IF = ( '','NULL' , 'null' , '""' )
    EMPTY_FIELD_AS_NULL = TRUE
copy into @mytablestage from mytable FILE_FORMAT = ( FORMAT_NAME = 'formatB' ) ON_ERROR = CONTINUE

person antimoneylaundering    schedule 12.09.2019    source источник


Ответы (1)


Глядя на желаемый результат, разделитель полей и разделитель записей не могут быть одинаковыми, чтобы различать строки и поля. Выберите другой разделитель записей, и FIELD_OPTIONALLY_ENCLOSED_BY = '"' с NULL_IF = ('', 'NULL', 'null', '" "') должен дать вам желаемый результат.

person Abhi Reddy    schedule 04.10.2019