c# - 我们如何将平面文件中的一行接一行插入到 OLEDb 目标数据库中?

标签 c# sql-server ssis

我有一个包含许多行和列的平面文件,这些行和列由定界符 (|) 分隔。在将行插入目标之前,我必须通过匹配某些列来检查记录是否已经存在,如果存在,我只需要将 amount 字段值添加到该记录中,然后它必须用于下一行以进行插入。

我尝试使用 Lookup 转换,然后我意识到匹配案例仅在表已经有记录时才有效,如果表是空的,我们将无法进行查找,因为平面文件记录批量插入。如果表为空,则整行都没有匹配的大小写,然后所有行都被插入数据库。但我必须过滤平面文件记录,以便在插入之前每一行。

Flat file row:
Row1= 100|10.35|abc|10/2018
Row2= 100|15.35|abc|10/2018
Row3= 101|20.00|xyz|10/2018

要加载到oledb dest db的目标;

Row1= 100|25.70|abc|10/2018  (25.70 == Row1 amount + Row2 amount)
Row3= 101|20.00|xyz|10/2018`enter code here`

最佳答案

我会使用聚合转换。

  1. 使用平面文件源和“|”阅读分隔符。
  2. 在 col1,3,4 上聚合变换组并求和 col2
  3. 载入表格

关于c# - 我们如何将平面文件中的一行接一行插入到 OLEDb 目标数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55945420/

相关文章:

sql-server - 将 'throw' 输出存储到变量中

mysql - SSIS - 使用 ADO.NET 连接将值插入变量

mysql - SSIS ODBC 源未在 SQL Server 代理作业中保存密码

sql-server - Azure 自动化中的 Active Directory 密码连接 Azure SQL 失败

c# - NancyFX 无法识别自定义数据注释

c# - 使用 FormsAuthentication.SetAuthCookie 存储加密字符串

c# - 将 JSON 字符串转换为 C# 字典

sql-server - 如何使用 TSQL 获取数据库中所有表的列表?

SSIS 优先约束表达式不起作用

c# - 为什么这个 UWP ComboBox 在初始化后可以为空但可以正常选择?