一尘不染

由于可能丢失数据,无法转换该值

sql-server

我想做什么?

在 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

数据类型。

  • 停在我的Flat File Source
  • 错误数据转换失败。“金额”列的数据转换返回状态值 2 和状态文本“由于可能丢失数据,无法转换该值。”。

  • 我试过使用 将

Derived Column

列转换为

DT_I4

.

  • 停在我的Derived Column处。
  • 错误数据转换失败。“金额”列的数据转换返回状态值 2 和状态文本“由于可能丢失数据,无法转换该值。”。

  • 我尝试使用

Data Conversion

将我的列的值转换为

DT_I4

.

  • 停在我的Data Conversion
  • 错误数据转换失败。“金额”列的数据转换返回状态值 2 和状态文本“由于可能丢失数据,无法转换该值。”。

  • 我试过更改我

DT_STR

在源和目标中的值的长度。

  • 根据设置在源或目的地停止。

  • 我尝试使用 Excel 源连接器连接,而不是添加IMEX=1添加到连接字符串。没运气。

我的编程意识告诉我,我完蛋了。我从来没有因为这么简单的事情遇到过这么大的问题。

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

我的系统

这是一台安装了 SQL Server 2008 的 Windows Server 2008 R2 机器。机器本身通过 Windows Update 完全更新。


阅读 194

收藏
2022-11-28

共1个答案

一尘不染

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

2022-11-28