读取单个文本文件并根据记录在其各自表中的列负载的特定值

时间:2019-01-16 05:23:56

标签: sql-server ssis

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

样本数据文件

  
      
  1. date | tx_grp1 | field1 | field2 | field3
  2.   
  3. date | tx_grp2 | field1 | field2 | field3 | field4
  4.   
  5. date | tx_grp10 | field1 | field2   .......
  6.   

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

1 个答案:

答案 0 :(得分:1)

仅凭一些经验即可使用SSIS解决此任务。以下是主要步骤和讨论:

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

基本上,您已完成。在生产数据库上使用之前,请在测试数据库上对其进行彻底测试。