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

Oracle如何使用for loop将表单条记录拆分插入多行数据

问题说明

现有源数据表单条记录采用并列字段存储多位司机信息,单条样例数据结构如下:

Driver_Name_1  Age  Driver_Name_2  Age  Driver_Name_3  Age
Tony           35   Mark           32   (空)          (空)

需要通过for循环逻辑将数据拆分写入目标表,要求每位司机对应独立一行记录。处理规则为:按序号从小到大依次校验每个Driver Name字段,字段非空时,就将该姓名和其对应的年龄作为一条记录插入目标表,字段为空则直接跳过处理下一组字段。

实现思路

核心是先把同一条记录里按序号对应的司机姓名、年龄字段配对,再循环逐组校验插入:

  • 第一步从源表读取待处理的单条记录,拿到全部字段值
  • 按序号把Driver_Name_N和同序号的Age字段组成一组数据,本例中一共3组
  • 用for循环遍历所有数据组:
    • 若当前组的姓名字段值不为空(排除Null、空字符串情况),就执行插入操作,把当前组的姓名、年龄写入目标表
    • 若当前组姓名字段为空,直接跳过,进入下一组的判断
参考实现(Python 操作数据库场景)
# 从源表查询得到的单条记录存入source_record
source_record = {
    "Driver_Name_1": "Tony",
    "Age_1": 35,
    "Driver_Name_2": "Mark",
    "Age_2": 32,
    "Driver_Name_3": None,
    "Age_3": None
}
# 配置单条源记录最多支持的司机字段组数
max_group_num = 3

# 循环逐组处理
for idx in range(1, max_group_num + 1):
    current_name = source_record[f"Driver_Name_{idx}"]
    current_age = source_record[f"Age_{idx}"]
    # 校验姓名非空才执行插入
    if current_name and str(current_name).strip():
        # 目标表插入SQL
        insert_sql = """
        INSERT INTO target_driver (driver_name, age)
        VALUES (%s, %s)
        """
        # 实际使用时打开下方注释,传入参数执行SQL即可
        # db_cursor.execute(insert_sql, (current_name, current_age))
        print(f"插入记录:{current_name},{current_age}岁")
执行效果

针对给出的样例数据,最终会向目标表插入2条有效记录:

  • Tony,35岁
  • Mark,32岁
    第3组姓名字段为空,不会生成无效空记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:27:13