我有一个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";
我的问题发生在第一步。让我解释一下:我的一些专栏可能包含大量文本。我很清楚那些柱子是什么。
问题是:
我想配置我的包,这样如果数据源包含比预期更小的数据,它就不会出错。在我看来,这是相当合理的,但我无法做到.
任何帮助都将不胜感激。
发布于 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行之后没有长文本或长文本)。我想您可以使用两种可能的方法来处理这个问题:
NTEXT-size数据粘贴到这些列中。省去了很多神经。您可以在第一行这样做,这样Excel提供程序在检查列内容之后就不会感到沮丧。PS。第三种方法是根本不使用Excel提供程序。将Excel文件保存为CSV并使用平面文件源,您将不会受到此问题的影响。只有当您100%确信源文件满足所有要求时,Excel才是好的,并且永远不会意外地更改其结构。
https://stackoverflow.com/questions/28679201
复制相似问题