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

如何使用from_csv结合schema_of_csv解析表列中的嵌套CSV数据?

解析未知结构的表内CSV列

schema_of_csv()的参数要求是字符串字面量,没法直接传入列名,得先从表中提取CSV样本生成Schema,再用这个Schema解析全量数据,具体步骤如下:

1. 生成CSV对应的Schema

先从表中取一条(或多条)有代表性的CSV记录,生成匹配的Schema:

-- 取单条样本生成Schema
SELECT schema_of_csv((SELECT csv_col FROM csv_data_table LIMIT 1)) AS csv_schema;

如果担心单条样本字段不全,可合并多条样本生成更准确的Schema:

-- 合并前10条样本,用换行分隔后生成Schema
SELECT schema_of_csv(string_agg(csv_col, '\n')) AS csv_schema
FROM csv_data_table
LIMIT 10;

执行后会得到类似'id INT, username STRING, signup_date DATE'的Schema字符串。

2. 用生成的Schema解析全表数据

把上面得到的Schema字符串代入from_csv(),解析所有CSV列:

-- 替换为你实际生成的Schema字符串
SELECT from_csv(csv_col, 'id INT, username STRING, signup_date DATE') AS csv_data
FROM csv_data_table;

动态生成Schema并解析(无需手动复制Schema)

如果不想手动复制Schema字符串,可通过CTE动态获取并解析:

WITH csv_sample AS (
    -- 取多条样本合并成一个CSV块
    SELECT string_agg(csv_col, '\n') AS sample_csv
    FROM csv_data_table
    LIMIT 10
),
generated_schema AS (
    -- 基于样本生成Schema
    SELECT schema_of_csv(sample_csv) AS schema_str
    FROM csv_sample
)
-- 用动态生成的Schema解析全表
SELECT from_csv(c.csv_col, s.schema_str) AS csv_data
FROM csv_data_table c
CROSS JOIN generated_schema s;

内容的提问来源于stack exchange,提问作者Oleksandr Baranov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:25:57