【问题标题】:Convert from string to int in SSIS在 SSIS 中从字符串转换为 int
【发布时间】:2016-02-19 22:13:09
【问题描述】:

我正在将数据库从一种结构转换为新结构。旧数据库是 FoxPro,新数据库是 SQL Server。问题是一些数据在foxpro中保存为char数据,但实际上是外键表。这意味着它们需要是 sql 中的 int 类型。问题是当我尝试在 SSIS 中从任何与字符相关的类型到整数的数据转换时,我得到以下错误消息:

输出“OLE DB 源输出”(22) 上的输出列“columnName”(24) 存在错误。返回的列状态为:“由于可能丢失数据,无法转换该值”。

如何从字符串或字符转换为 int 而不会出现潜在的数据丢失错误。我手动检查了这些值,看起来它们都小到可以放入 int 数据类型。

【问题讨论】:

  • 您能否提供一个要转换的示例值?并且还提供源的确切数据类型(由 SSIS 解释)
  • 如果你能得到一份 Visual FoxPro 9.0 的副本(也许是 MSDN sub),你可以使用 SQL Server Upsizing Wizard。
  • @devlincarnate 这些值看起来都像整数,但它们被保存为字符类型。示例:34563927342
  • @AlanB 你能扩展一下吗?我有foxpro 9。什么是sql server up-sizing Wizard?
  • 您确实意识到 34563927342 超过了整数的最大值,对吧?您需要使用 int64 / bigint。

标签: sql sql-server ssis bids foxpro


【解决方案1】:

数据源 -> 数据转换任务。

在数据转换任务中,点击配置错误输出

对于错误和截断,将其从失败组件更改为重定向行。

现在你有两条路。好的数据会以正确的类型从 DCT 中流出。不良数据将走红路。用它做点什么。转储到文件、添加数据视图和检查等。

【讨论】:

    【解决方案2】:

    像 34563927342 这样的值超过了max size for integer。你应该使用 Int64 / bigint

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 2018-11-07
      相关资源
      最近更新 更多