使用导入向导将Excel数据导入SQL Server 2012中的表失败 - 文本截断

时间:2017-08-23 16:09:44

标签: sql-server sql-server-2012 excel-2010 sql-import-wizard

我有一个Excel文件,我每周导入一个表格。

我正在使用Excel 2010和SSMS 2012.本周导入失败,我无法确定原因。我能够成功地将数据导入新表。新表的表定义与我的旧表的表定义匹配,因此似乎不是问题。下面是我收到的错误的屏幕截图。我已经检查了PO头文本字段,并且没有任何东西超过我所拥有的varchar(255)的数据类型。

另外,我对数据进行排序只是为了查看某行是否导致了问题并且插入了更多数据,但我仍然遇到错误,并且它与原始导入尝试不在同一行。我甚至放弃并再次创建原始表格,但仍然收到错误。

enter image description here

1 个答案:

答案 0 :(得分:2)

问题可能是Import/Export WizardSSIS获取有关数据类型的元数据的方式。

它使用前几行。如果有一个长字符串(长于255),则数据类型为memo,否则为string。

一种解决方法是根据文本列降序的长度对Excel行进行排序。

  

来自Excel Source

     

截断文字。

     

当驱动程序确定Excel列包含文本数据时,驱动程序会根据其采样的最长值选择数据类型(字符串或备忘录)。如果驱动程序未在其采样的行中发现任何超过255个字符的值,则会将该列视为255个字符的字符串列而不是备注列。

     

因此,可能会截断超过255个字符的值要从备注列导入数据而不截断,必须确保至少有一个采样行中的备注列包含长度超过255个字符的值,或者您必须增加驱动程序采样的行数以包含这样的行。

     

您可以通过增加HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Excel注册表项下的TypeGuessRows值来增加采样的行数。有关更多信息,请参阅PRB:从Jet 4.0 OLEDB源传输数据失败,错误。