如何在从CSV到Snowflake表的数据提取过程中取消对Snowflake中字符的转义

5rgfhyps  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(125)

我有一个进程,它会自动从外部阶段将CSV数据摄取到Snowflake表中。CSV文件的分隔符为竖线(竖线或|)的
但有一个单元格的数据包含转义符本身(即反斜杠-“”),后面紧跟列分隔符(即|)
现在,摄取过程假设分隔符(“|“)是数据本身的一部分,因为它后面紧跟着“”,因此列值会左移,导致表中的数据不稳定。
CSV格式的数据如下所示
栏_1|列_2|第3列
ABC公司.........|定义⋯ ⋯ ⋯.|无网格
当这个被摄入到表中时它看起来像这样
第1列第2列第3列
ABC..........防御......| EFG空值
最理想的情况是,它应该作为
第1列第2列第3列
ABC..........定义.........\ EFG
注:我无法更改数据,因为它必须从上游系统流出,我需要按原样摄取数据(即使它看起来像是真正的数据问题)
有人能帮助我在这里,我应该使用文件格式的哪个属性,以便摄取这些数据吗?
提前感谢您!

thtygnil

thtygnil1#

为file_format配置设置ESCAPE_UNENCLOSED_FIELD = NONE可能有助于获得所需的结果。整个文件格式应如下所示:

create or replace file format my_csv_format
  type = csv
  field_delimiter = '|'
  skip_header = 1
  null_if = ('NULL', 'null')
  ESCAPE_UNENCLOSED_FIELD = NONE
  empty_field_as_null = true
  ERROR_ON_COLUMN_COUNT_MISMATCH = false
  compression = auto;

相关问题