首页 > 解决方案 > 读取单个文本文件并根据记录到其各自表中的列加载的特定值

问题描述

我一直在互联网上寻找解决问题的方法,但似乎找不到任何信息。我有一个大的单个文本文件(1000 万行),我需要创建一个 SSIS 包以根据分配给该记录的事务组将这些记录加载到不同的表中。也就是说,Tx_grp1 将进入 Tx_Grp1 表,Tx_Grp2 将进入 Tx_Grp2 表,依此类推。单个分隔文本文件中有 37 个不同的事务组,记录被插入到该文件中,以了解它们实际发生的时间(按时间)。此外,每个事务组具有不同数量的字段

样本数据文件

  1. 日期|tx_grp1|field1|field2|field3
  2. 日期|tx_grp2|field1|field2|field3|field4
  3. 日期|tx_grp10|field1|field2 .......

任何有关如何进行的建议将不胜感激。

标签: sql-serverssis

解决方案


这个任务可以用SSIS来解决,只是有一些经验。以下是主要步骤和讨论:

  1. 为您的文件定义一个平面文件数据源,描述所有列。这里可能出现的问题 - 基于tx_group值的不同数据类型的字段。如果是这种情况,我会将所有字段声明为足够长的字符串,然后在数据流中 - 转换其类型。
  2. 为您将用于存储结果的数据库创建一个 OLEDB 连接管理器。
  3. 创建一个主数据流,您将在其中处理该文件,并添加一个平面文件源
  4. 条件拆分添加到平面文件源的输出中,并在其中定义与事务组一样多的过滤器和输出。
  5. 对于每个事务组数据输出 -如有必要,为字段添加数据转换。注意 - 如果需要将字符串转换为 int,则无法更改现有列的数据类型 - 创建一个新列。
  6. 为每个目标表添加一个 OLEDB 目标。将其连接到适当的事务组数据流,并映射字段。

基本上,你已经完成了。在生产数据库上使用它之前,在测试数据库上彻底测试包。


推荐阅读