【问题标题】:SSIS : Excel Source detection typeSSIS:Excel源检测类型
【发布时间】: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 新手)

标签: sql sql-server excel ssis


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-28
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2014-09-04
    • 2011-12-01
    相关资源
    最近更新 更多