从舞台选择时格式总是json吗?
Posted
技术标签:
【中文标题】从舞台选择时格式总是json吗?【英文标题】:Is format always json when SELECTing from stage? 【发布时间】:2020-02-21 12:01:00 【问题描述】:Snowflake 通过创建 FILE_FORMAT(avro、json、csv 等)支持多种文件类型。
现在我已经从雪花阶段 (s3) 测试了 SELECTing:
*.avro 文件(从 nifi 处理器批处理 10k 源 oracle 表生成)。 *.json 文件(每行 json)。当从@myStg 中选择 $1 时,雪花扩展的行数与 avro 或 json 文件上的记录一样多(很酷),但是.. $1 变体都是 json 格式,现在我想知道我们使用的雪花文件格式是否总是记录在变体 $1 上作为 json 到达? 我还没有测试过 csv 或其他雪花文件格式。
或者我想知道我是否从 avros(来自 oracle 表)中获取 json,因为 NiFi 处理器可能会创建 avro 文件(内部使用 json 格式)。 也许我在这里造成了一些混乱..我知道 avro 文件包含两者:
avro 架构 - 类似于 json 键/值的语言。 压缩数据(二进制)。谢谢, 伊曼纽尔·O。
【问题讨论】:
Avro 在内部使用 JSON 数据结构,顶部有附加协议。正如 Sriga 为 CSV 指出的那样,如果文件格式在内部不是 JSON,它在选择 $1 上会显得不同。 感谢@GregPavlik 确认 avro、xml 和 json 被加载为 $1 单列 VARIANT。对于 CSC,如果有一个函数来 JSONize 完整的 CSV 行会很好(这很容易 - 考虑到有标题行可以提供 json 键名)。我喜欢一致性,但似乎加载 CSV 必然会手动加载到一组固定的列中.. 不可能按原样加载所有 CSV 行,这很可悲.. 如果由于某种原因 CSV 开始带来更多字段,则会丢失它们因为 COPY 显式加载 $1, $2, .. $n 固定数量的字段。但对我来说重要的是 avro.. 【参考方案1】:我尝试使用 CSV,当它使用 CSV 时,它会解析文件中的每个记录,如下所示
因此,当它涉及 JSON 时,它将把一个完整的 JSON 视为一个记录,因此它以 JSON 格式显示。
【讨论】:
嗨,斯里加,我想知道是否有办法将完整的 CSV 行加载为 json(考虑到有 1 个标题行可以提供 json 键名?以上是关于从舞台选择时格式总是json吗?的主要内容,如果未能解决你的问题,请参考以下文章
从 jQuery Ajax 发布时 PHP Json 格式错误