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

如何使用Python将JSON对象的所有行插入SQL Server表

批量插入JSON数据到SQL Server表的方案

核心思路

不用逐个提取列,利用JSON对象的键与表列名的对应关系,动态生成插入语句后批量写入,既高效又不用硬编码每一列。

具体步骤&代码示例

假设你的原始数据是data(如果已经用json.dumps()转成了字符串,先转回到Python列表:data = json.loads(json_object)),直接用以下代码实现:

import pymssql
import json

# 1. 若只有JSON字符串,先转回Python列表
# json_object = json.dumps(data, indent=2)
data = json.loads(json_object)

# 2. 用你已建好的SQL Server连接信息
conn = pymssql.connect(
    server='你的服务器地址',
    user='用户名',
    password='密码',
    database='目标数据库名'
)
cursor = conn.cursor()

# 3. 动态生成插入语句
if data:
    # 从第一个数据项提取列名(需保证JSON的key与Table_A的列名完全匹配)
    columns = ', '.join(data[0].keys())
    # 生成对应数量的占位符
    placeholders = ', '.join(['%s'] * len(data[0].keys()))
    insert_sql = f"INSERT INTO Table_A ({columns}) VALUES ({placeholders})"

    # 4. 把所有数据项的value转成元组,组成批量插入的数据集
    values_list = [tuple(item.values()) for item in data]

    # 5. 批量执行插入操作
    cursor.executemany(insert_sql, values_list)
    # 提交事务
    conn.commit()

# 关闭连接资源
cursor.close()
conn.close()

注意事项

  • 确保JSON的每个键完全对应Table_A的列名(SQL Server默认大小写不敏感,但建议保持一致避免意外)。
  • 如果部分JSON项缺失字段,或表列有默认值,可以先补全缺失的键:
    # 提前准备Table_A的所有列名列表
    all_table_columns = ['Key', 'Summary', 'Status', '列4', '列5', ...]
    for item in data:
        for col in all_table_columns:
            if col not in item:
                item[col] = None  # 或设置对应列的默认值
    
  • executemany比循环逐个插入效率高得多,适合数据量较大的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:17:29