SSIS 保持强制更改 excel 源字符串以浮动

Jua*_*lez 10 sql-server ssis excel

Excel 中有一个列应该是文本,但 SSIS 在那里看到数字文本并自动使其成为双精度浮点 [DT_R8]。

我可以在输出分支的外部和输出列中手动更改它,但错误输出只是拒绝让我更改相应的列。

Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".
Run Code Online (Sandbox Code Playgroud)

我曾尝试修改包 xml。我试过了IMEX=1typeguessrow=0但没有一个能解决我的问题。这有什么解决办法吗?还有一些文章建议您修改注册表,以便 excel 在猜测数据类型之前读取超过默认的 8 行。我不想走这条路,因为即使它可以工作,我也必须修改我计划运行包的机器上的注册表。

要导入SQL nvarchar字段的excel字段读取例如

295.3
296.33
Run Code Online (Sandbox Code Playgroud)

但它们被写入 SQL 表

295.30000000000001
296.32999999999998
Run Code Online (Sandbox Code Playgroud)

我放入数据查看器,字段显示

295.3
296.33
Run Code Online (Sandbox Code Playgroud)

一直到执行这是正确的,但我猜当它遇到 OLE DB 目标源时,它会以某种方式将它转换为

295.30000000000001
296.32999999999998
Run Code Online (Sandbox Code Playgroud)

这是错误的。

我也有诸如 V321.1 和 V213.34 之类的值,它们绝对不是整数,需要存储为 varchar。

Jua*_*lez 2

看来没有办法解决这个问题。Excel 会查看列中的前几行数据,并且无论如何都会强制数据类型为 FLOAT。我得到了一个解决方案,在前几行(8+)中创建一个带有一些 varchar 字符的模板,这样 EXCEL 就会选择它作为数据类型,然后导入我的数据。有帮助的是,由于我使用 Source Safe,我能够“签入”文件,以便它使我的包文件“只读”,这样 Visual Studio 就无法更改我预定义的数据类型。