首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Excel到Server的SSIS : DataType长度

问从Excel到Server的SSIS : DataType长度
EN

Stack Overflow用户
提问于 2015-02-23 17:04:12
回答 1查看 1.8K关注 0票数 0

我有一个SSIS包( Server 2008)。我有一个Excel源文件(XLS 97-2003),我想首先将它导入到一个SQL表中,该表将所有内容都存储为字符串(例如,数字和日期都存储在它们编写的rae中)。然后,我将数据从这个表中导入到我的其他表中。

Excel源代码配置如下:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*********;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";

我的问题发生在第一步。让我解释一下:我的一些专栏可能包含大量文本。我很清楚那些柱子是什么。

问题是:

  • 一方面,如果源列被配置为ntext,如果有长文本(>255 char),则可以。如果没有数据是这些列,或短文本(<255个字符),甚至长文本后的前8行,我会得到一个错误(红框上的Excel源.没有更进一步的)。
  • 另一方面,如果将源列配置为(wstr,255),并且没有数据或短数据(<255 char),则一切都很好。如果有较大的文本,我会得到一个错误(这似乎是合乎逻辑的)。

我想配置我的包,这样如果数据源包含比预期更小的数据,它就不会出错。在我看来,这是相当合理的,但我无法做到.

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-23 17:46:18

根据MSDN SSIS文档,您应该阅读以下两篇文章:

缺失值。Excel驱动程序读取指定源中一定数量的行(默认为8行),以猜测每列的数据类型.有关更多信息,请参见PRB:使用DAO OpenRecordset作为NULL返回的Excel值。 截断文本.当驱动程序确定某个Excel列包含文本数据时,驱动程序将根据其采样的最长值选择数据类型(字符串或备注)。如果驱动程序在其采样的行中没有发现任何大于255个字符的值,则它将该列视为255个字符字符串列,而不是备注列。因此,大于255个字符的值可能会被截断。若要在不截断的情况下从备注列导入数据,必须确保抽样行中至少一个行中的备注列包含大于255个字符的值,或者必须增加驱动程序采样的行数才能包含这样的行。您可以通过增加HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel注册表项下的TypeGuessRows值来增加采样的行数。有关更多信息,请参见PRB:从Jet4.0 OLEDB源传输数据失败w/ Error。

因此,您似乎要么试图动态地更改excel源结构( Excel提供程序不工作),要么您的数据可能不符合上面列出的要求(即8行之后没有长文本或长文本)。我想您可以使用两种可能的方法来处理这个问题:

  1. 将虚拟NTEXT-size数据粘贴到这些列中。省去了很多神经。您可以在第一行这样做,这样Excel提供程序在检查列内容之后就不会感到沮丧。
  2. 使用MSDN的链接增加行采样设置。如果您在这些列中没有任何文本,这无论如何都会失败。

PS。第三种方法是根本不使用Excel提供程序。将Excel文件保存为CSV并使用平面文件源,您将不会受到此问题的影响。只有当您100%确信源文件满足所有要求时,Excel才是好的,并且永远不会意外地更改其结构。

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

https://stackoverflow.com/questions/28679201

复制
相关文章

相似问题

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