您好我正在尝试将数据从csv加载到SQL Server。平面文件源外部和输出中的数据类型是(DT_STR,50)。我将它们转换为派生列中的各自数据类型,并尝试将所有错误的字段发送到错误文件。但是当我试图加载时。我收到以下错误。
错误:0xC0049064在数据流任务,派生列[668]:尝试执行类型转换时发生错误。 错误:数据流任务中的0xC0209029,派生列[668]:SSIS错误代码DTS_E_INDUCEDTRANSFORMFAILUREONERROR。
失败的字段是0.234我试图将它从(DT_STR,50)转换为(DT_NUMERIC,7,5)。我不明白为什么会失败。请帮忙。
答案 0 :(得分:0)
不幸的是,SSIS抛出了一些相当普通的错误,你可能会遇到很多种错误。
当我不知道我的平面文件包含一个包含与普通数据行不同的字段集的页脚时,我碰到了这个。
我在将错误行重定向到多播并在我的输出上启用了数据查看器后发现了这一点,这让我看到了失败的原因。
在我的情况下,我可以看到我有一个具有可靠值的页脚,我可以通过条件分割来检测它以跳过它。之后,派生列中的数字转换表现正确。
答案 1 :(得分:0)
您的(DT_STR,50)字段中至少有一个值可能不适合(DT_NUMERIC,7,5),因为它有7个以上的数字字符。在输入数据转换步骤的路径上启用数据查看器,您可能会看到我的意思(根据缓冲区大小,您可能需要对有问题的字符串字段进行排序)。如果你没有看到一个太长的缓冲区,那么在你再次缓冲之前缓冲,那么数据转换步骤将会失败。
我试图转换一个对我所投射的NUMERIC长度和精度来说太大的INT时抛出同样的错误。