SSIS:Excel源检测类型

Posted

技术标签:

【中文标题】SSIS:Excel源检测类型【英文标题】:SSIS : Excel Source detection type 【发布时间】:2019-01-29 18:28:03 【问题描述】:

我正在工作

在 sql server 2012 中, 和 OLEDB JET 提供程序 12.0。 Excel 13。

我必须导入许多 excel 文件......但是这个该死的提供者并没有以一种非常奇怪和奇怪的方式检测到 rigth 类型,这意味着 ==>

我知道扫描前 8 行以确定类型的 rowtypeguess(但我无法更改寄存器以更改所有服务器中的该属性)。

最大的问题是 ssis 将某些浮点列检测为 dt-wstr,因为它们的前八位为 null,但对于其他列,他检测到正确的类型:float!

我不明白为什么会有一个不变的行为!!!

我什至尝试将 excel 列强制为数字,但 SSIS 仍然希望它们为 DT_WSTR。

所以我不得不做一个 tmp 表,然后像这样转换所有需要浮动的列:

case 
            when isnull([cola],'') <> ''  
            then cast(replace([cola],',','.') as float) 
end  

问题是我有无数列,我必须经常进行这种整合:所以这意味着如果下次这些列突然被识别为浮点数,但其他列不再被识别为浮点数 我必须在每次集成时更改所有内容。

从长远来看,我该如何管理?你有什么解释吗?

【问题讨论】:

将所有内容导入为字符串(或 unicode 字符串),然后在 Source 和 Destination 之间放置一个 Data Conversion 任务。 您是在构建持久性 SSIS 包,还是在使用导入向导? @TabAlleman 不,这是一个持久包 当您“试图将 excel 列强制为数字”时,您具体采取了哪些步骤? @digital.aaron 如何将所有内容直接导入字符串,是否有简单的操作,或者我是否必须使用组件强制将 1000 列的数据转换为字符串? (ssis 新手) 【参考方案1】:

好的,就像我在问题中所说的那样, 我什至试图将 excel 列强制为数字,例如

今天重新启动我的电脑,我注意到他将它们检测为浮动!!!!哈哈哈哈哈哈哈哈

下午他们又回到了 wstr ......

我想知道 ssis ... 有什么意义?一点都不实用!!!

【讨论】:

以上是关于SSIS:Excel源检测类型的主要内容,如果未能解决你的问题,请参考以下文章

SSIS - 修复源数据中数据类型不正确的数据

[Excel 源 [37]] 错误:SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER

ssis excel源无法在设计时获取连接管理器

无法使用 SSIS 快速加载选项从 Excel 源加载 Netezza 中的数据

SSIS 包在 Visual Studio 2010 中卡住了“验证 Excel 源”

SSIS Excel 连接管理器无法连接到源