【问题标题】:Importing Data from excel into sql server将数据从excel导入sql server
【发布时间】:2017-06-19 18:50:06
【问题描述】:

我正在尝试使用 ssis 包将数据导入 sql server。我有一个名为 description 的列,其中有一个包含 690 个字符的单元格。

我收到截断错误,因为 SSIS 无法确定所需的最大长度。我尝试从 excel 源连接更改输出列属性,但这没有帮助。但是,当我将具有最大长度的单元格移动到第一行时,它工作得很好(因为 ssis 包确定了前 8 行的最大长度)。

因为,我想自动化这个过程,我不想每次都修改 Excel 表。我已阅读有关更改 ssis 读取的行集数量的信息,但无法弄清楚如何去做。

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

【问题讨论】:

  • 我相信您正在寻找数据流中的数据转换步骤。您应该能够将输出列指定为所需大小的字符串(不要忘记更新映射以使用新列)。
  • 需要数据转换吗?它以文本/字符串格式出现。它需要 ntext 数据类型,但考虑到 nvarchar,即使我增加了 nvarchar 的字符数,它也无济于事。
  • @JacobH 嘿,所以当我使用数据转换时。它说一个新的错误,说无法检索列描述的长数据。
  • 改用 DT_WSTR? (unicode 字符串而不是 ntext)

标签: sql sql-server ssis


【解决方案1】:

问题的答案是,你去windows注册表,改一下excel连接管理器,看8行以上,确定列数据类型和长度,问题就解决了。

您可以通过在运行控制台中键入“regedit”进入 Windows 注册表,当您在 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.

【讨论】:

    【解决方案2】:

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

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

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

    希望它对你有用。

    【讨论】:

    • 它不起作用。我更改了输出列的数据类型和长度。但外部列不会改变。我也无法更改这些值。这是你推荐的吗?
    • 问题是 excel 源认为该列的最大长度为 255,它通过前 8 行。您是否知道任何解决方法而无需访问 Windows 注册表。
    • 您需要更改两个值,即输出列长度和外部列长度。试试看。
    • 无法更改外部列长度。当我更改它,然后刷新它会恢复到原来的样子。
    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多