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

SQL Server双表JSON解析插入的最佳实现方案咨询

SQL Server双表JSON解析插入的最佳实现方案咨询

我是SQL新手,最近碰到一个双表数据处理的问题,想找个最优的解决办法。我有两个表,结构和现有数据如下:

Table1

ABC
aabbjs[12]
ccddjs[45]

说明:Table1的A列是自增ID,应用会把JSON格式的数据存入C列,示例里的js[12]是简化后的JSON内容

Table2

ABCD
aabbjs[1]js[2]
ccddjs[4]js[5]

我的需求是:解析Table1中C列的JSON数据,把拆分出来的对应字段插入到Table2里。我已经搞懂了怎么解析JSON和执行插入操作,但卡在了如何正确关联两张表的数据——毕竟插入的时候需要对应上Table1每条记录的归属,确保解析后的数据能准确放到Table2的对应行里,不知道最合理的实现方式是什么。

针对这个场景,我给你几个实用的解决方案:

1. 基础插入(一次性同步)

如果只是想把Table1中所有符合条件的记录解析后插入Table2,可以用INSERT...SELECT结合JSON解析函数:

-- 假设Table1的C列是JSON对象,比如{"c": "js[1]", "d": "js[2]"}
INSERT INTO Table2 (A, B, C, D)
SELECT 
    t1.A, 
    t1.B, 
    JSON_VALUE(t1.C, '$.c') AS parsed_C,
    JSON_VALUE(t1.C, '$.d') AS parsed_D
FROM Table1 t1
-- 可以加条件过滤不需要同步的记录,比如只同步未处理过的
WHERE NOT EXISTS (
    SELECT 1 FROM Table2 t2 
    WHERE t2.A = t1.A -- 用自增ID关联,确保唯一性
)

2. 解析JSON数组的情况

如果Table1的C列是JSON数组(比如["js[1]", "js[2]"]),需要拆分到Table2的C、D列,可以用CROSS APPLY配合OPENJSON来解析:

INSERT INTO Table2 (A, B, C, D)
SELECT 
    t1.A, 
    t1.B, 
    j.parsed_C,
    j.parsed_D
FROM Table1 t1
CROSS APPLY (
    SELECT 
        JSON_VALUE(t1.C, '$[0]') AS parsed_C,
        JSON_VALUE(t1.C, '$[1]') AS parsed_D
) j
WHERE NOT EXISTS (
    SELECT 1 FROM Table2 t2 
    WHERE t2.A = t1.A
)

3. 增量同步+更新(支持新增和修改)

如果需要既同步新插入的Table1记录,又能更新Table2中已有的对应记录,可以用MERGE语句,这是比较灵活的方案:

MERGE INTO Table2 t2
USING (
    SELECT 
        A, 
        B, 
        JSON_VALUE(C, '$.c') AS parsed_C,
        JSON_VALUE(C, '$.d') AS parsed_D
    FROM Table1
) t1 ON t2.A = t1.A
WHEN MATCHED THEN
    -- 当Table2已有对应记录时,更新C、D列
    UPDATE SET 
        t2.C = t1.parsed_C,
        t2.D = t1.parsed_D
WHEN NOT MATCHED THEN
    -- 当Table2没有对应记录时,插入新行
    INSERT (A, B, C, D) 
    VALUES (t1.A, t1.B, t1.parsed_C, t1.parsed_D);

小提示:

因为Table1的A列是自增ID,你可以利用这个特性做增量同步——比如每次同步后记录下最大的A值,下次同步只处理A大于这个值的记录,这样能提升效率,避免重复处理。

备注:内容来源于stack exchange,提问作者sadmin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 07:38:09