尽管使用了数据转换和准确的目标数据类型,但 SSIS 数据转换错误

Posted

技术标签:

【中文标题】尽管使用了数据转换和准确的目标数据类型,但 SSIS 数据转换错误【英文标题】:SSIS Data Conversion Error despite using Data Conversion and accurate destination Datatype 【发布时间】:2019-01-14 23:21:50 【问题描述】:

我在运行我的包时收到以下错误:

[数据转换 [2]] 错误:将“FieldName”列 (373) 转换为“FieldName 副本”(110) 列时数据转换失败。

转换返回状态值 2 和状态文本“由于可能丢失数据,无法转换该值。”。

但是,我不明白为什么。我已经仔细检查了输入和输出,以验证它们是否有意义并且是我所期望的。我还检查了我的 excel 文件列中的所有原始数据。

我的包设置: Excel 数据源提供数据转换然后派生列,最后输出到 Ole DB 目标 (sql)

我做了什么:

我在数据转换上打开了高级编辑器。我确认传入的数据类型是DT_STR,这是可以预料的,因为源数据类型没有被正确识别。它实际上是我的 excel 文件中的日期。我确认数据转换输出列是database timestamp [DT_DBTIMESTAMP],就像我设置的那样。我的目标表具有 FieldName 的 DateTime 数据类型。

我错过了什么?

【问题讨论】:

【参考方案1】:

我认为这是日期格式问题,请检查该列不包含空字符串或 NULL 值。

还要检查值是否类似于 yyyy-MM-dd HH:mm:ss 日期格式。

要了解有关 SSIS 数据类型的更多信息,请查看以下文章:

Integration Services Data Types

同样在将字符串值转换为日期时间时,如果值格式正确,只需将源列映射到目标,无需数据转换转换and they will be implicitly converted

【讨论】:

我已经检查过,双重检查和三次检查。我很困惑,也有点沮丧。不应该这么难。我一定错过了一些简单的东西。我从头开始并重试了很多次。有些事情我可以尝试,但如果他们解决了问题,那对我来说将是荒谬的。例如,使用源 excel 文件并将列设置为 ShortDate 而不是当前的 Date。我认为这就是数据转换转换的重点。 是的,我试过你的建议直接映射但没有运气。为了保持一致性,所以我知道会发生什么,我想显式转换和映射我的所有列。 @mo_maat 尝试转换为 DT_DBDATE,然后将列映射到目标。 此链接可能会提供一些见解***.com/questions/43635787/… 我最终预先格式化了一个具有一致数据类型的 Excel 文件。然后,我将其用作向其中添加数据的模板。处理随机数据类型的可能性太让人头疼了,而且不值得。我可能会在另一个时间解决这个问题,以娱乐和学习。我猜将值从一个 Excel 表粘贴到另一个不会改变目标格式?

以上是关于尽管使用了数据转换和准确的目标数据类型,但 SSIS 数据转换错误的主要内容,如果未能解决你的问题,请参考以下文章

C语言的数据类型分为几种?

缓冲区

尽管准确率超过 99%,但随机森林模型产生了不正确的预测

PostgreSQL串行化隔离级别(SSI)的能力与实现

为啥尽管损失衰减且评估结果合理,但张量流的“准确度”值始终为 0

Java中的强制类型转换是如何转换的?