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

如何在SSIS平面文件连接管理器编辑器设置行列分隔符并拆分数据为两张表

在SSIS平面文件连接管理器中配置分隔符并拆分数据至两张表

一、平面文件连接管理器基础配置

针对你提供的分号分隔、带引号字段的平面文件,按以下步骤设置分隔符:

  1. 创建平面文件连接管理器,选中目标文件后进入编辑器
  2. 常规选项卡:选择「分隔符」格式,字符集匹配文件(如ANSI)
  3. 列选项卡:
    • 列分隔符选择 分号{;}
    • 行分隔符保留默认的 {CR}{LF}(若为Linux格式文件则选{LF})
    • 点击「刷新」预览列拆分效果,确认无误
  4. 高级选项卡:
    • 勾选「文本限定符」为 ",确保带引号的字段被正确解析(避免把引号内的字符误判为分隔符)
    • 若先按整行读取处理多表逻辑,可只保留一个列,设置数据类型为DT_STR,长度设为255(或更大以覆盖行内容)

二、拆分多表数据的数据流逻辑

你的文件包含两组独立表数据(以#开头的表头行、空行分隔),需通过以下步骤拆分:

  1. 平面文件源:使用上述配置的连接管理器,读取所有行(若按单列读取则直接输出整行字符串)
  2. 派生列组件:
    • 新增列RowType:用表达式判断行类型:
      LEFT(Column0,1) == "#" ? "Header" : (LEN(TRIM(Column0)) == 0 ? "Empty" : "Data")
      
    • 新增列TableName:从行内容提取表名:
      RowType == "Header" ? SUBSTRING(Column0,2,FINDSTRING(Column0,";",1)-2) : SUBSTRING(Column0,1,FINDSTRING(Column0,";",1)-1)
      
  3. 条件拆分组件:
    • 创建两个分支:
      • 分支1:TableName == "META_DATA1"
      • 分支2:TableName == "META_DATA2"
    • 同时过滤空行:RowType != "Empty"
  4. 数据拆分与清洗:针对每个分支,拆分出对应列并去除引号:
    • 以META_DATA1分支为例,用派生列新增NAME和VALUE:
      NAME: REPLACE(SUBSTRING(Column0,FINDSTRING(Column0,";",1)+1,FINDSTRING(Column0,";",2)-FINDSTRING(Column0,";",1)-1), "\"", "")
      VALUE: REPLACE(SUBSTRING(Column0,FINDSTRING(Column0,";",2)+1,LEN(Column0)-FINDSTRING(Column0,";",2)-1), "\"", "")
      
    • 或使用「拆分列」组件,以分号为分隔符拆分后,再用派生列去除引号
  5. OLE DB目标:将两个分支的数据分别写入对应的数据库表(META_DATA1和META_DATA2)

最终验证结果

处理完成后,两张表的数据将与你的期望一致:

META_DATA1

NAMEVALUE
IT1
COMPUTER2

META_DATA2

DEPARTMENTVALUE
IT1
COMPUTER2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:21:49