snowflake-cloud-data-platform - 有没有办法加载包含单引号、双引号和换行符的数据的csv?
问题描述
我有 .csv 和下面的数据
1234|Player's| Team, be on time to collect the
prizes|2019:02:02
1235|Player's|<body ref="tag">|2019:02:03
我正在尝试执行复制命令以将数据加载到雪花仓库中。
记录失败,位置 [id] 在第 2 行。
为了解决这个问题,为带有双引号的新行数据提供了引号,但随后在第 3 行(“标签”)失败。
解决方案
@kuldeep - 您无法加载此数据,因为换行符用作行分隔符以及数据中的值。您需要在导出数据之前对新行进行转义,然后在将它们加载到 DW 之前,在 Snowflake 的文件格式中提及转义字符。
当您将此数据从源系统导出到 S3/blob 时,请确保添加引号并作为转义字符。这将确保 (1) 新行字符被转义并在第 1 行中被引用 (2) 标记引号被转义然后在第 2 行中被引用。如果数据特定于特定表,您可以在 Snowflake 中创建特定的文件格式用于表并将其与复制语句一起使用。例如,选择以反斜杠作为转义字符的 CSV 文件格式,并可选择将封闭字段设置为双引号。
CREATE FILE FORMAT CSV_ESC_DQ TYPE = 'CSV' COMPRESSION = 'AUTO'
FIELD_DELIMITER = ',' RECORD_DELIMITER = '\n' SKIP_HEADER = 0
FIELD_OPTIONALLY_ENCLOSED_BY = '\042' TRIM_SPACE = FALSE
ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE ESCAPE = '\134'
ESCAPE_UNENCLOSED_FIELD = '\134' DATE_FORMAT = 'AUTO'
TIMESTAMP_FORMAT= 'AUTO' NULL_IF = ('\\N');
copy into table_name from @stage/path_to_file/
file_format=csv_esc_dq;
推荐阅读
- azure - 如何在 azure 中侦听来自事件网格侦听器的事件到 gcp 中的存储桶
- java - 如何在法语中设置 Stanford-NLP 简单 API?
- python - GraphQL:如何定义输入参数/约束
- r - 根据数据框每一行的值对单元格着色
- kubernetes - 使用 GCP 进行自定义运行状况检查
- sql - 如何解决这个特定于 SQL 的合并问题
- ios - 无法在按钮点击时重新加载 UICollectionView
- scala - Scala 是否智能终止计算折叠操作的 OR 表达式?
- sparql - 限制范围返回的记录
- tensorflow - tensorflow通过(不同的2d范围)切片列表更改/分配矩阵元素值