由于潜在的数据丢失,无法转换该值。


12

首先,让我澄清这不是一个重复的问题,也不是这个问题的潜在重复。我已经尝试过在StackOverflow和DBA Stack Exchange上解决此问题的每个单个变体的所有答案,但是没有任何运气。

在过去的两天里,我一直在努力解决这个问题(每天大约工作7个小时),即使在谷歌搜索问题之后,似乎也没有其他人对我的问题有完全相同的解决方案。

我想做什么?

在SSIS中,我试图从CSV文件中读取内容,并将其中的行插入到OLE DB数据库中。为此,我进行了有史以来最简单的设置,如下所示。

  1. Flat File Source -读取CSV行。
  2. Derived Column -目前不执行任何操作(仅在此处进行实验)。
  3. Data Conversion -目前不执行任何操作(仅在此处进行实验)。
  4. OLE DB Destination -将行存储在数据库中。

当我尝试运行它时,它将停止在我的OLE DB目标上执行,并显示以下错误消息。

输入“ OLE DB目标输入”(51)上的输入列“金额”(187)出错。返回的列状态为:“由于潜在的数据丢失,无法转换该值。”。

失败(Amount)的列当前为类型DT_STR。这似乎是我目前最信任的类型。

我尝试了什么?

  • 我尝试在Flat File Connection失败的列上使用“建议类型”功能。因此,建议使用Single byte signed int数据类型。
    • 我的平面文件源处停止
    • 错误数据转换失败。列“金额”的数据转换返回状态值2和状态文本“由于潜在的数据丢失,无法转换该值”。
  • 我尝试使用Derived Column将列转换为DT_I4
    • 停在我的派生列
    • 错误数据转换失败。列“金额”的数据转换返回状态值2和状态文本“由于潜在的数据丢失,无法转换该值”。
  • 我尝试使用将该Data Conversion列的值转换为DT_I4
    • 停在我的Data Conversion
    • 错误数据转换失败。列“金额”的数据转换返回状态值2和状态文本“由于潜在的数据丢失,无法转换该值”。
  • 我尝试更改DT_STR源和目标中我的值的长度。
    • 根据设置在源或目的地停止
  • 我尝试使用Excel Source连接器进行连接,而在连接字符串中不添加IMEX=1添加。没运气。

我的编程意识告诉我,我很困惑。我从来没有遇到过这么简单的大问题。

为什么我不能仅仅忽略数据的“潜在”损失?至少可以说这真令人沮丧。

我的系统

这是装有SQL Server 2008的Windows Server 2008 R2计算机。机器本身通过Windows Update进行了完全更新。


似乎我有一个值问题(尽管是从Access提取的),并且在投射列时必须使用特定的代码页。我再也无法访问SSIS包来检查我做了什么。

您要插入的列的数据类型是Amount什么?
所有行业的乔恩

2
打开CSV的平面文件连接管理器。转到“高级”选项卡,然后选择Amount列。截屏,请用此图片更新您的问题。
billinkc

有机会看看连接管理器了吗?
billinkc

1
我不相信您会为之困惑,但是如果看不到Connection Manager的定义,这是无法说的。
billinkc

Answers:


3

我已经遇到过几次,问题是导出/导入参数中的数据类型不匹配。首先要做的是通过右键单击源或目标并选择“高级编辑器”来检查这些参数。转到输入和输出属性,并检查所有项目的该列的数据类型-外部,输出和输入。我通常在这里看到一个差异,通常一个是Unicode(WSTR),另一个是I4或DSTR。


8

忽略错误

首先,您应该能够通过以下方式忽略字符串截断:转到“平面文件源”,“错误输出”,然后将“截断”下的“失败组件”更改为“忽略错误”。

更好的解决方案

真正的问题可能是SSIS管道内的字符串长度仍然错误,因为它是在较早的时候初始化的。

您可以通过双击“平面文件源”中的绿色箭头(或在“派生列/数据转换”之后)并选择“元数据”来确定是否是这种情况。在那里,您可以看到管道内字段的长度。

如果经常看到元数据不再与源组件匹配,则主要是通过向导创建平面文件源及其相应的连接。

我的建议是删除连接和平面文件源,然后重新创建它们,因为我还没有找到一种使管道元数据与源组件重新同步的方法。


2
但是,这不属于“截断”。我已经尝试过了。
Mathias Lykkegaard Lorenzen 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.