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

如何将MySQL表字段中的JSON解析并存储为GridDB集合

将MySQL中的JSON数据转存到GridDB(以productName为RowKey)

步骤1:从MySQL提取JSON数据

可以直接用MySQL的JSON函数提取指定字段,或者读取整个JSON字符串后在应用层解析:

  • 用SQL提取字段:
    SELECT 
      json_column->>'$.productName' AS productName,
      json_column->>'$.price' AS price,
      json_column->>'$.specification' AS specification
    FROM your_mysql_table;
    
  • 如果用应用层解析(比如Python),直接读取整个JSON字段后用json.loads()解析为字典。

步骤2:创建GridDB容器

先在GridDB中创建对应结构的表容器,将productName设为RowKey:

from griddb_python import GridStore, ContainerInfo, DataType

# 连接GridDB集群
factory = GridStore.get_instance()
gridstore = factory.get_store(
    host="your_griddb_host",
    port=3181,
    cluster_name="your_cluster_name",
    username="admin",
    password="admin"
)

# 定义容器字段与类型
container_info = ContainerInfo(
    "ProductTable",
    [
        ("productName", DataType.STRING),
        ("price", DataType.INTEGER),
        ("specification", DataType.ARRAY_STRING)  # 对应JSON中的数组,根据实际元素类型调整
    ],
    DataType.STRING,  # RowKey类型为字符串(对应productName)
    True  # 容器类型为TABLE
)

# 创建容器(若已存在则直接获取)
container = gridstore.put_container(container_info)

步骤3:批量写入数据到GridDB

将从MySQL读取并解析后的数据,逐条或批量写入GridDB:

import json
import pymysql

# 连接MySQL
mysql_conn = pymysql.connect(
    host="your_mysql_host",
    user="mysql_user",
    password="mysql_password",
    database="your_database"
)
cursor = mysql_conn.cursor()

# 读取MySQL中的JSON数据
cursor.execute("SELECT json_column FROM your_mysql_table;")
mysql_rows = cursor.fetchall()

# 批量处理并写入
batch_rows = []
for row in mysql_rows:
    json_data = json.loads(row[0])
    # 处理空数组等边界情况
    spec_list = json_data.get("specification", [])
    batch_rows.append([
        json_data["productName"],
        json_data["price"],
        spec_list
    ])

# 批量插入到GridDB
if batch_rows:
    container.multi_put(batch_rows)

# 关闭所有连接
cursor.close()
mysql_conn.close()
gridstore.close()

关键注意事项

  • 类型匹配:GridDB的字段类型必须和JSON数据类型一致,比如price是整数就用DataType.INTEGER,数组类型要对应元素类型(如ARRAY_STRING/ARRAY_INTEGER)。
  • 空值处理:如果JSON中存在缺失字段,要设置默认值(比如空数组、0),避免写入失败。
  • 性能优化:数据量较大时,使用multi_put批量写入,比单条插入效率更高。

内容的提问来源于stack exchange,提问作者Chuah Cheng Jun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:07:03