【问题标题】:SSIS problem loading data from csv file to SQL Server table将数据从 csv 文件加载到 SQL Server 表的 SSIS 问题
【发布时间】:2021-09-01 07:08:25
【问题描述】:

我有一个简单的 SSIS 包,它从 csv(逗号分隔)文件加载到表中。到目前为止它工作得很好,问题是新文件在最后的记录中有一些额外的字段: 20,30,40.5,50
15,20,25.5,30
10,20,30.5,40,50.5
该包将最后一行中的 50.5 与 40 连接起来,并给出格式错误。如果我删除 50.5,包运行没有问题。有没有办法设置它以忽略额外的列?

【问题讨论】:

  • 前4列总是数字吗?
  • 这只是一个例子,所以不,可以是任何东西。
  • 好吧,除非您的字段中有逗号,否则我的答案仍然有效。您只需要将字符串转换为正确的数据类型。

标签: ssis


【解决方案1】:

将文件作为单列文本读取。

将其推入脚本转换并命名您的 4 个输出列...

string s = Row.[singlestring];

使用拆分...

string[] pieces = s.Split(',');

输出 [0-3]...

Row.[Col1] = decimal.Parse(pieces[0]);
Row.[Col2] = decimal.Parse(pieces[1]);
Row.[Col3] = decimal.Parse(pieces[2]);
Row.[Col4] = decimal.Parse(pieces[3]);

然后忽略剩下的部分。

【讨论】:

  • 使用 decimal.Parse() 代替。我看到你的数字不是整数
【解决方案2】:

可能最好的方法是创建一个包含 5 列的示例 CSV 文件并使用它来映射源。 映射五列后,仅指定要在数据流中考虑的前四列,然后使用原始文件。这将是忽略您的额外列的解决方法。

你也可以关注these steps

【讨论】:

  • 这里的问题是文件不在我的控制之下,以后可以有任意数量的列。
猜你喜欢
  • 1970-01-01
  • 2019-09-02
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 2017-09-05
  • 2020-02-26
相关资源
最近更新 更多