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

预导入处理中按'/'拆分ID为多行并存储至新临时表的方法

看起来你需要在报表预导入阶段处理带斜杠的ID拆分,同时保留原数据到指定表,拆分后的新ID存入新表。我来给你梳理下具体的实现思路和代码示例:

解决方案思路

核心分两步走:

  • 先把临时表的完整数据同步到主表和临时表2,确保原ID不丢失
  • 针对RWID字段按/拆分,把拆分出来的每个子ID存入新表

具体代码示例

下面分两种常见数据库环境给出实现代码,你可以根据自己的实际环境调整:

SQL Server 环境

1. 保留原数据到主表和临时表2

这一步就是简单的批量插入,直接把临时表的所有数据复制过去:

-- 插入主表
INSERT INTO 主表 (RWID, RWLEN, DESCR, QTY, UNIT)
SELECT RWID, RWLEN, DESCR, QTY, UNIT FROM 临时表;

-- 插入临时表2
INSERT INTO 临时表2 (RWID, RWLEN, DESCR, QTY, UNIT)
SELECT RWID, RWLEN, DESCR, QTY, UNIT FROM 临时表;

2. 拆分ID并插入新表

用SQL Server自带的STRING_SPLIT函数配合CROSS APPLY,可以把每个带斜杠的ID拆分成两行,然后批量插入新表:

-- 假设新表结构包含SplitID(拆分后的ID)和其他关联字段
INSERT INTO 新表 (SplitID, DESCR, QTY, UNIT)
SELECT value AS SplitID, DESCR, QTY, UNIT
FROM 临时表
CROSS APPLY STRING_SPLIT(RWID, '/');

MySQL 环境

1. 保留原数据到主表和临时表2

和SQL Server逻辑一致,直接复制数据:

-- 插入主表
INSERT INTO 主表 (RWID, RWLEN, DESCR, QTY, UNIT)
SELECT RWID, RWLEN, DESCR, QTY, UNIT FROM 临时表;

-- 插入临时表2
INSERT INTO 临时表2 (RWID, RWLEN, DESCR, QTY, UNIT)
SELECT RWID, RWLEN, DESCR, QTY, UNIT FROM 临时表;

2. 拆分ID并插入新表

MySQL没有直接的拆分函数,我们用SUBSTRING_INDEX分别提取斜杠前后的内容,分两次插入:

-- 插入斜杠前的部分(比如T2)
INSERT INTO 新表 (SplitID, DESCR, QTY, UNIT)
SELECT SUBSTRING_INDEX(RWID, '/', 1) AS SplitID, DESCR, QTY, UNIT
FROM 临时表;

-- 插入斜杠后的部分(比如10060)
INSERT INTO 新表 (SplitID, DESCR, QTY, UNIT)
SELECT SUBSTRING_INDEX(RWID, '/', -1) AS SplitID, DESCR, QTY, UNIT
FROM 临时表;

额外注意点

  • 确保目标表的字段结构和临时表匹配,要是有字段类型差异,记得做转换
  • 如果担心重复数据,可以在SELECT后加DISTINCT,或者用数据库的重复处理机制(比如MySQL的ON DUPLICATE KEY UPDATE)
  • 要是你用的是ETL工具(比如SSIS、DataStage),也可以用工具自带的字符串拆分组件来实现,然后把不同的输出流分别导向对应的表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:09:10