amazon-web-services - 雪花 - 使用从 S3 复制命令到雪花时出现“解析 JSON 时出错”
问题描述
我正在尝试将 gz 文件从我的 S3 目录复制到 Snowflake。
- 我在雪花中创建了一个表(注意“额外”字段被定义为“变体”)
CREATE TABLE accesslog
(
loghash VARCHAR(32) NOT NULL,
logdatetime TIMESTAMP,
ip VARCHAR(15),
country VARCHAR(2),
querystring VARCHAR(2000),
version VARCHAR(15),
partner INTEGER,
name VARCHAR(100),
countervalue DOUBLE PRECISION,
username VARCHAR(50),
gamesessionid VARCHAR(36),
gameid INTEGER,
ingameid INTEGER,
machineuid VARCHAR(36),
extra variant,
ingame_window_name VARCHAR(2000),
extension_id VARCHAR(50)
);
- 我在雪花中使用了这个复制命令:
copy INTO accesslog
FROM s3://XXX
pattern='.*cds_201911.*'
CREDENTIALS = (
aws_key_id='XXX',
aws_secret_key='XXX')
FILE_FORMAT=(
error_on_column_count_mismatch=false
FIELD_OPTIONALLY_ENCLOSED_BY = '"'
TYPE = CSV
COMPRESSION = GZIP
FIELD_DELIMITER = '\t'
)
ON_ERROR = CONTINUE
a17589e44ae66ffb0a12360beab5ac12 2019-11-01 00:08:39 155.4.208.0 SE 0.136.0 3337 game_process_detected 0 OW_287d4ea0-4892-4814-b2a8-3a5703ae68f3 e9464ba4c9374275991f15e5ed7add13 765 19f030d4-f85f-4b85-9f12-6db9360d7fcc [{"Name":"file","Value":"wowvoiceproxy.exe"},{"Name":"folder","Value":"C:\\Program Files (x86)\\World of Warcraft\\_retail_\\Utils\\WowVoiceProxy.exe"}]
你能告诉我是什么原因导致这个错误吗?谢谢!
解决方案
我正在猜测;
这'Error parsing JSON'
当然与该extra variant
领域有关。
JSON 看起来不错,但反斜杠存在潜在问题\
。
如果您查看成功加载的行,是否已删除反斜杠?
如果您有STAGE
涉及转义字符的设置,这可能(可能)发生。
然后\\Utils
Windows 路径值中的子字符串会触发 Unicode 解码错误,例如。
Error parsing JSON: hex digit is expected in \U???????? escape sequence, pos 123
更新:
事实证明,您必须通过将以下内容添加到以下内容来关闭转义字符处理FILE_FORMAT
:
ESCAPE_UNENCLOSED_FIELD = NONE
另一种方法是双引号字段或双重转义反斜杠,例如。C:\\\\Program Files
.
推荐阅读
- android - 在 Kotlin 中使用 bool 自动显示/关闭警报对话框
- c# - 反序列化 HttpResponseMessage
- python - 为熊猫数据框的单独列(来自特定列范围)的最大值选择相应的列值
- sql - SQL查询完整列而不在Group By中定义它并优化Inner Join
- c# - 算法和数据结构——我解决这些复杂性问题对吗?
- http - nginx 中的几个条件满足
- sql - 从 sql 中的条件中排除某些结果
- tensorflow - 优化 Tensorflow 目标检测模型 V2 Centernet 模型进行评估
- r - 使用 dplyr 总结一个变量并计算另一个依赖于其他变量的平均值
- sharepoint - 是否有 Microsoft Graph API 调用来获取列表的增量/更改?