是否将RFC4180文件(CSV规格)导入到雪花?(无法创建与CSV RFC规范匹配的文件格式) [英] Import RFC4180 files (CSV spec) into snowflake? (Unable to create file format that matches CSV RFC spec)
本文介绍了是否将RFC4180文件(CSV规格)导入到雪花?(无法创建与CSV RFC规范匹配的文件格式)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
摘要:
一年前的原始问题:How to escape double quotes within a data when it is already enclosed by double quotes
我有一个与原始发帖相同的需求:我有一个与CSV RFC spec匹配的CSV文件(我的数据有正确限定的双引号,其中有逗号,我的数据中还有换行符。Excel能够很好地读取它,因为该文件与规范匹配,并且Excel能够正确读取规范)。 不幸的是,我不知道如何将符合CSV RFC 4180规范的文件导入到Snowflake中。有什么想法吗?详细信息:
我们多年来一直在创建符合RFC 4180规范的CSV文件,以便最大限度地提高应用程序和操作系统之间的兼容性。
以下是我的数据外观的示例:
KEY,NAME,DESCRIPTION
1,AFRICA,This is a simple description
2,NORTH AMERICA,"This description has a comma, so I have to wrap the whole field in double quotes"
3,ASIA,"This description has ""double quotes"" in it, so I have to qualify the double quotes and wrap the field in double quotes"
4,EUROPE,"This field has a carriage
return so it is wrapped in double quotes"
5,MIDDLE EAST,Simple descriptoin with single ' quote
在Excel中打开此文件时,Excel会正确读取行/列(因为Excel遵循RFC规范):
为了将此文件导入Snowflake,我首先尝试创建文件格式并进行以下设置:
名称 | 值 |
---|---|
列分隔符 | 逗号 |
行分隔符 | 换行 |
要跳过的标题行 | 1 |
字段(可选)由 | 括起来双引号 |
转义字符 | (&Q) |
转义未封闭字段 | 无 |
但是当转到保存文件格式时,我收到以下错误:
无法创建文件格式";csv_spec";。 SQL编译错误:参数‘FIELD_OPTIONLY_INCLUTED_BY’的值[&Quot;]与参数‘ESCAPE’冲突
看起来我好像遗漏了什么?我想我一定是把雪花的配置弄错了。(
推荐答案
在写下此问题并测试我能想到的所有方案时,我发现了一种似乎可以工作的文件格式:
名称 | 值 |
---|---|
列分隔符 | 逗号 |
行分隔符 | 换行 |
要跳过的标题行 | 1 |
字段(可选)由 | 括起来双引号 |
转义字符 | 无 |
转义未封闭字段 | 无 |
相同信息,但更喜欢截图的用户:
同样的信息,但采用SQL形式:
ALTER FILE FORMAT "DB_NAME"."SCHEMA_NAME"."CSV_SPEC3" SET COMPRESSION = 'NONE' FIELD_DELIMITER = ',' RECORD_DELIMITER = '
' SKIP_HEADER = 1 FIELD_OPTIONALLY_ENCLOSED_BY = ' 42' TRIM_SPACE = FALSE ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE ESCAPE = 'NONE' ESCAPE_UNENCLOSED_FIELD = 'NONE' DATE_FORMAT = 'AUTO' TIMESTAMP_FORMAT = 'AUTO' NULL_IF = ('\N');
我不知道这为什么管用,但它确实管用,所以,就是这样。
这篇关于是否将RFC4180文件(CSV规格)导入到雪花?(无法创建与CSV RFC规范匹配的文件格式)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文