是否将RFC4180文件(CSV规格)导入到雪花?(无法创建与CSV RFC规范匹配的文件格式) [英] Import RFC4180 files (CSV spec) into snowflake? (Unable to create file format that matches CSV RFC spec)

查看:23
本文介绍了是否将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,我首先尝试创建文件格式并进行以下设置:

括起来 (&Q)
名称
列分隔符 逗号
行分隔符 换行
要跳过的标题行 1
字段(可选)由双引号
转义字符
转义未封闭字段

但是当转到保存文件格式时,我收到以下错误:

无法创建文件格式";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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆