2017-06-19 219 views
3

我想使用ssis包将数据导入到sql server。我有一个名为description的列,它有一个690个字符的单元格。从excel导入数据到sql server

由于SSIS无法确定所需的最大长度,因此我得到一个截断错误。我试着改变excel源连接的输出列属性,但没有帮助。但是,当我将最大长度的单元移动到第一行时,它完美地工作(因为ssis包决定了前8行的最大长度)。

因为我想让这个过程自动化,所以我不想每次都修改excel表格。我已阅读了有关更改ssis读取的行集数量,但尚未能弄清楚如何去做的问题。

任何类型的帮助,将不胜感激。

+0

我相信你正在寻找在你的数据流的数据转换步骤。您应该能够将输出列指定为所需大小的字符串(不要忘记更新映射以使用新列)。 –

+1

是否需要数据转换?它以文本/字符串格式进入。它需要ntext数据类型,但需要考虑nvarchar,即使我增加了nvarchar的字符数量也没有帮助。 – Rahul

+0

@JacobH嘿所以当我使用数据转换。它说一个新的错误说无法检索列描述的长数据。 – Rahul

回答

1

问题的答案是,你去Windows注册表,并更改Excel连接管理器,以查看超过8行,以确定列数据类型和长度,从而解决问题。

你去windows的注册表在运行控制台键入“regedit”并当你在Windows注册表您按照

HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node -> Microsoft -> Jet -> 4.0 ->Engines -> Excel -> and then set the typeguessrows to 0, so that it can parse through the entire file instead of the top 8 rows. 
+0

即使是你的,你也必须接受这个答案 – Hadi

+0

@哈迪是先生/女士。它不会让我2天。 – Rahul

0

您需要指定Excel Source输入列的长度。

在您的SSIS包中,右键单击数据流任务中的Excel源,然后单击“高级编辑器Excel源”。接下来将该列的数据类型和长度从其默认值更改。

如果您使用的是VS2015或更高版本,请右键单击Excel Source和clic属性。在Show Advance Editor链接的属性clic的底部,并更改Input and Output Properties选项卡中的长度。

希望它适合你。

+0

它不起作用。我改变了输出列的数据类型和长度。但外部列不会改变。我也不能改变这些值。 这是你推荐的吗? – Rahul

+1

问题在于excel源码认为该列最大长度为255,它通过前8行。你知道任何解决方法,而不必去Windows注册表。 – Rahul

+0

您需要更改这两个值,输出柱长度和外部柱长。尝试一下。 – MagdielAybar