从Excel导入数据到SQL Server

3
我正在尝试使用SSIS包将数据导入SQL Server。我有一个名为“description”的列,其中一个单元格包含690个字符。
由于SSIS无法确定所需的最大长度,因此我遇到了截断错误。我尝试从Excel源连接更改输出列属性,但那并没有帮助。然而,当我将最大长度的单元格移动到第一行时,它能够完美地工作(因为SSIS软件包会从前8行中确定最大长度)。
由于我想自动化这个过程,我不想每次都修改Excel表格。我已经阅读了有关更改SSIS读取行集数的内容,但还没有找到如何执行该操作。
任何类型的帮助都将不胜感激。

我相信你正在寻找数据流中的数据转换步骤。您应该能够指定所需大小的字符串作为输出列(不要忘记更新映射以使用新列)。 - Jacob H
1
数据转换是必要的吗?它以文本/字符串格式出现。它需要ntext数据类型,但它正在考虑nvarchar,即使我增加nvarchar的字符数也没有帮助。 - Rahul
@JacobH 嘿,当我使用数据转换时,它报告了一个新的错误,说无法检索列描述的长数据。 - Rahul
@JacobH 数据转换无法工作,因为Excel源连接无法读取描述列中的长数据,这是问题所在。 - Rahul
1
https://support.microsoft.com/ar-sa/help/281517/prb-transfer-of-data-from-jet-4.0ledb-source-fails-with-buffer-overflow-error - Hadi
显示剩余5条评论
2个回答

1
答案是,你需要进入Windows注册表并更改Excel连接管理器,以查看超过8行的数据来确定列的数据类型和长度,从而解决问题。
你可以通过在运行控制台中键入“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

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

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

如果您使用的是VS2015或更高版本,请右键单击Excel源并单击属性。在属性的底部部分,单击“显示高级编辑器”链接,并在“输入和输出属性”选项卡中更改长度。

希望这对您有所帮助。


它不起作用。我改變了輸出列的數據類型和長度,但外部列不會改變。我也無法更改那些值。這是你所建議的嗎? - Rahul
1
问题在于Excel数据源认为该列的最大长度为255,这是通过前8行获取的。你知道有没有方法可以解决这个问题,而不需要去Windows注册表吗? - Rahul
你需要同时更改两个值,输出列长度和外部列长度。试一下。 - MagdielAybar
无法更改外部列长度。当我更改它,然后刷新时,它会恢复到最初的长度。 - Rahul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接