【发布时间】:2013-06-10 09:12:25
【问题描述】:
我动态定义了一个用户变量 xlsFileName 和 xlsWorksheetName。在 excel 连接管理器中,excelfilepath 指向 xlsFileName。在 excel 源中,我使用 excel 连接管理器和访问模式表名称或视图名称变量,然后我使用工作表变量 xlsWorksheetName。这一切都很好,并且数据会按应有的方式加载。
但现在我注意到,在我的一列(其中包含数字和字符串,其中大部分是数字)中,所有字符串都将被导入为 NULL,这是完全错误的。此列的目标数据类型是 varchar。
如何强制 SSIS 从 excel 中导入源中的真实值?
【问题讨论】:
-
不,imex=1 没有帮助,仍然是 NULL...
-
是的,大多数答案都是这样说的。我个人不是直接从Excel导入,而是先转换成竖线分隔的txt。
-
还有其他想法吗?我真的需要让这个工作:(我试图做一个类似sql的命令,我用CSTR转换列(因为它的访问sql)但仍然没有运气......你说你先把它转换成管道分隔的txt,做您在 ssis 中执行此操作,如果是,如何?只要我可以在 ssis 中执行此操作,我也会转换为 csv 或其他内容。业务用户只知道 excel,所以这就是我无法更改原始源文件的原因。
-
您将创建一个新的临时文件,该文件将在包的末尾使用和丢弃。我的方法是从 SSIS 中调用外部 Excel 到 Txt 控制台应用程序,并传递必要的变量,如文件位置。控制台应用程序在完成时返回转换文件的文件路径,我将其映射到一个变量并用作我的数据流的源。该过程的本质是转换应用程序。