You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将单个.json文件中的多份JSON数据加载到Snowflake中?

单个JSON文件中多份JSON数据加载到Snowflake的方法

根据你的需求,分两种常见的多JSON格式场景给出具体加载方案:

场景1:JSON文件为数组格式

如果你的JSON文件是包裹在数组里的多份对象(比如 [{"key1":val1},{"key2":val2}]),可以通过以下步骤加载:

  1. 创建适配数组格式的文件格式
CREATE OR REPLACE FILE FORMAT json_array_format
  TYPE = JSON
  STRIP_OUTER_ARRAY = TRUE; -- 自动展开外层数组,将每个JSON对象作为单独行
  1. 创建存储阶段(以S3为例,可替换为其他云存储或本地阶段)
CREATE OR REPLACE STAGE my_json_stage
  URL = 's3://你的存储桶路径/'
  FILE_FORMAT = json_array_format;
  1. 创建目标表(按需定义字段)
CREATE OR REPLACE TABLE target_table (
  id INT,
  name STRING
);
  1. 加载数据并解析字段
COPY INTO target_table (id, name)
  FROM (
    SELECT 
      $1:id::INT, -- 解析JSON中的id字段转为INT类型
      $1:name::STRING -- 解析JSON中的name字段转为STRING类型
    FROM @my_json_stage/你的JSON文件名.json
  );

场景2:JSON文件为每行一个JSON对象(JSON Lines格式)

如果你的JSON文件是每行一个独立JSON对象(比如一行{"id":1,"name":"Alice"},下一行{"id":2,"name":"Bob"}),步骤如下:

  1. 创建基础JSON文件格式
CREATE OR REPLACE FILE FORMAT json_lines_format
  TYPE = JSON; -- 默认支持每行一个JSON对象,无需额外配置
  1. 创建存储阶段
CREATE OR REPLACE STAGE my_json_stage
  URL = 's3://你的存储桶路径/'
  FILE_FORMAT = json_lines_format;
  1. 创建目标表(同场景1)
CREATE OR REPLACE TABLE target_table (
  id INT,
  name STRING
);
  1. 加载数据并解析字段
COPY INTO target_table (id, name)
  FROM (
    SELECT 
      $1:id::INT,
      $1:name::STRING
    FROM @my_json_stage/你的JSON文件名.json
  );

额外技巧:先加载原始JSON再解析

如果JSON结构复杂,可先将所有JSON数据加载到VARIANT类型列中,再按需解析:

-- 创建存储原始JSON的表
CREATE OR REPLACE TABLE raw_json_table (
  raw_data VARIANT
);

-- 加载原始数据
COPY INTO raw_json_table
  FROM @my_json_stage/你的JSON文件名.json;

-- 后续查询时解析字段
SELECT 
  raw_data:id::INT,
  raw_data:name::STRING
FROM raw_json_table;

内容的提问来源于stack exchange,提问作者richard antony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:58:08