我正在尝试从Snowflake卸载CSV文件,在该文件中仅引用非空值并将其括在双引号中。
这是我的桌子
|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
查看所需的输出,字段定界符和记录定界符不能相同,以区分行和字段。选择一个不同的记录定界符,然后使用NULL_IF =('','NULL','null','“”')的FIELD_OPTIONALLY_ENCLOSED_BY ='“'应该会为您提供所需的输出。