首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SSIS Excel数据源-是否可以覆盖列数据类型?

SSIS Excel数据源-是否可以覆盖列数据类型?
EN

Stack Overflow用户
提问于 2009-02-12 10:55:11
回答 6查看 58.7K关注 0票数 21

在SSIS中使用excel数据源时,每个单独列的数据类型都是从列中的数据派生出来的。是否有可能覆盖此行为?

理想情况下,我们希望从excel源传递的每一列都是字符串数据类型,以便可以在数据流的后续步骤中对从源接收的数据执行数据验证。

目前,Error Output选项卡可用于忽略转换失败-然后相关数据为null,包将继续执行。但是,我们希望知道原始数据是什么,以便为该行生成适当的错误消息。

EN

回答 6

Stack Overflow用户

发布于 2009-09-23 17:04:21

如果Excel文件的第一行数据的相关列中包含数字,则SSIS引擎似乎会将该类型重置为数字类型。它一直在重置我的。我进入Excel文件,通过在数字前面放置一个单引号,将数字更改为“存储为文本的数字”。它们现在被作为文本读取。

我还注意到,SSIS使用第一行忽略程序员所指出的数据的实际类型(我甚至告诉Excel将整个列的格式设置为文本,但SSIS仍然使用数据,它是一堆数字),并对其进行重置。一旦我修复了这个问题,我在Excel文件中第一行数据的数字前面放了一个单引号,我认为它会正确的,但是没有,还有额外的工作。

实际上,即使SSIS外部DataSource列现在的类型为DT_WSTR,它仍将读取43567192作为4.35671E+007。因此,您必须返回到Excel文件,并将单引号放在所有数字的前面。

相当差劲,微软!但这就是你的解决方案。如果Excel文件不在您的控制之下,我不知道该怎么办。

票数 10
EN

Stack Overflow用户

发布于 2017-08-19 01:34:36

我正在寻找类似问题的解决方案,但在互联网上没有找到任何东西。虽然大多数已找到的解决方案在设计时都可以工作,但当您想要自动化SSIS包时,它们就不起作用了。

我解决了这个问题,并通过更改"Excel Source“的属性使其正常工作。默认情况下,AccessMode属性设置为OpenRowSet。如果将其更改为SQL Command,则可以编写自己的SQL来根据需要转换任何列。

对于我来说,SSIS将NDCCode列视为浮点型,但我需要它作为字符串,因此我使用了以下SQL:

代码语言:javascript
复制
Select [Site], Cstr([NDCCode]) as NDCCode From [Sheet1$]

票数 4
EN

Stack Overflow用户

发布于 2014-06-26 10:24:03

我可以解决这个问题。在创建SSIS包时,我手动将特定的列更改为文本(打开excel文件,选择列,右键单击列,选择格式单元格,在数字选项卡中选择文本并保存excel)。现在创建SSIS包并对其进行测试。它起作用了。现在尝试使用未将此列设置为文本的excel文件。

它对我很有效,我可以成功地执行这个包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/540823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档