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

如何从指定JSON数据中提取UserID并插入对应数据表

实现方案

核心逻辑

  • 第一步:解析原始JSON字符串为对应语言/环境的结构化对象
  • 第二步:遍历users数组,提取所有元素的UserID字段值,组成独立的ID列表
    本次示例中提取到的UserID列表为:['5','7','22','23','24','25','33','45','46','47'],可根据目标表字段类型选择保留字符串格式或转换为整型
  • 第三步:将提取到的ID列表写入目标数据表,推荐使用批量插入提升性能

不同场景实现示例

场景1:Python 操作(适用于后端脚本/ETL场景)

import json
import pymysql

# 1. 加载解析JSON
raw_json = '''
{
  "PK_ID" : 0,
  "Group_Id" : 39,
  "Group_Name" : null,
  "Admin_User_Id" : 0,
  "DisplayName" : null,
  "Sms" : true,
  "Email" : false,
  "WhatsApp" : false,
  "UpdatedBy" : 28,
  "CreatedBy" : 28,
  "users" : [ {
    "UserID" : "5"
  }, {
    "UserID" : "7"
  }, {
    "UserID" : "22"
  }, {
    "UserID" : "23"
  }, {
    "UserID" : "24"
  }, {
    "UserID" : "25"
  }, {
    "UserID" : "33"
  }, {
    "UserID" : "45"
  }, {
    "UserID" : "46"
  }, {
    "UserID" : "47"
  } ],
  "MailOfficial" : null,
  "CC" : null,
  "BCC" : null,
  "EmailSubject" : null,
  "EmailContent" : null,
  "MessageText" : null,
  "WhatsAppText" : null,
  "SpName" : null,
  "MobileNo" : null,
  "TypeOfReport" : null
}
'''
data = json.loads(raw_json)
# 2. 提取UserID列表,按需可删除int()转换保留字符串格式
user_ids = [int(item["UserID"]) for item in data["users"]]

# 3. 批量插入数据库示例
conn = pymysql.connect(host="你的数据库地址", user="用户名", password="密码", database="库名")
cursor = conn.cursor()
# 假设目标表名为target_table,存储ID的字段名为user_id
insert_sql = "INSERT INTO target_table (user_id) VALUES (%s)"
cursor.executemany(insert_sql, user_ids)
conn.commit()
# 关闭连接
cursor.close()
conn.close()

场景2:MySQL 直接操作(JSON存储在MySQL字段中时)

如果原始JSON已经存储在MySQL的JSON类型字段里,比如源表source_table的json_col字段,可直接用SQL完成提取插入:

-- 提取UserID并插入目标表
INSERT INTO target_table (user_id)
SELECT JSON_UNQUOTE(JSON_EXTRACT(u, '$.UserID')) AS user_id
FROM source_table,
     JSON_TABLE(
         source_table.json_col->'$.users',
         '$[*]' COLUMNS (u JSON PATH '$')
     ) AS user_items;

注:JSON_TABLE函数需要MySQL 8.0及以上版本支持,低版本可通过编写存储过程遍历JSON数组实现

场景3:Node.js 操作(适用于后端服务场景)

const mysql = require('mysql2/promise');

// 原始JSON数据
const rawData = {
  "PK_ID" : 0,
  "Group_Id" : 39,
  // 其余字段省略
  "users" : [{"UserID":"5"},{"UserID":"7"},{"UserID":"22"},{"UserID":"23"},{"UserID":"24"},{"UserID":"25"},{"UserID":"33"},{"UserID":"45"},{"UserID":"46"},{"UserID":"47"}]
}
// 提取UserID
const userIds = rawData.users.map(item => parseInt(item.UserID))

// 批量插入
async function insertIds() {
  const conn = await mysql.createConnection({
    host: '你的数据库地址',
    user: '用户名',
    password: '密码',
    database: '库名'
  });
  const [rows] = await conn.query(
    'INSERT INTO target_table (user_id) VALUES ?',
    [userIds.map(id => [id])]
  );
  await conn.end();
}
insertIds();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 07:39:04