【发布时间】:2020-02-10 12:28:45
【问题描述】:
我正在尝试将 CSV 文件从阶段加载到我从文件内容创建的表中。我创建了一个 CSV 类型的文件格式和我认为应该在 ',' 上拆分的设置,并使用 '"' 作为可能的字符串字段换行。但是如果内容本身包含,这些字段仍然会再次拆分一个','。似乎 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 AM
一些 - 文字
- 其他一些文字 - 1234567890"
“还有一些文字”
我在这里缺少什么?似乎我设置的文件格式应该将字段视为整个字符串,我认为这意味着不要在“,”分隔符上拆分字段。但是,我在这里看不到另一种文件格式 arg 来解决这个问题。
编辑:扩展示例数据并将 EMPTY_FIELD_AS_NULL 添加到创建文件格式。这应该像我预期的那样失败。我看到还有一些其他变体,即使是引号字符也保留在输出中,但我正在尝试清理数据集以进行发布。
【问题讨论】:
-
您确定样本数据正确吗?看起来奇怪的地方有双引号。
标签: snowflake-cloud-data-platform