【问题标题】:SSIS Excel to SQL Server - Long Data on Column FailureSSIS Excel 到 SQL Server - 列故障的长数据
【发布时间】:2019-09-16 21:26:16
【问题描述】:

我有一个设置为使用 ForEach 文件循环的 SSIS 包。此循环应获取所有 *.xlsx 文件并将它们传输到 SQL Server。

我遇到的问题是有几列可能没有文本到一千个字符。当我使用示例文件设置包并填写所有超过 255 个字符的列时,我可以成功地将这些列设置为 DT_NTEXT 并将数据传输到服务器。

但是,一旦我使用包含空格或 255 个字符以下的任何内容的 REAL 文件,它会在 SSMS 中引发错误,提示“无法检索列“x”的长数据。

我应该如何让包在导入时不查看数据类型,而只是根据包规范导入?我知道我在某处看到 SSMS 仍然查看前 8 行?所以我继续将“TypeGuessRows”更改为 0 它存在的任何地方。我没有重新启动服务器,但我确实重新启动了 SSMS 并且仍然有问题。我还将延迟验证和 ValidateExternalMetaData 设置为 false。

有人有解决这个问题的方法吗?

更新:这是应用 BLOBTempStoragePathBufferTempStoragePath 后的错误截图。 SSIS Long Data Error

【问题讨论】:

  • 您是否将数据流任务的BLOBTempStoragePath 属性设置为SSIS 服务可以访问的快速驱动器?参考:Set BLOBTempStoragePath and BufferTempStoragePath to Fast Drives
  • @AlwaysLearning 是的;我确实应用了这两个,部署了,但仍然遇到同样的错误。我已更新我的问题以包含错误。
  • 您有机会预先转换为文本文件吗? XLS 基本无法使用。
  • @Nick.McDermaid 那将是我的下一步。源代码是创建 .xls 文件的自动服务器报告 - 由于其他一些问题,我必须将其转换为 .xlsx 文件。我在想一个 .csv 文件可以工作,但是因为有评论字段我不能使用“,”所以也许 TAB 分隔?如果 Excel 文件可以正常工作,那就太好了,这样我就不必进行操作了。我不明白为什么 SSIS 认为它需要重新评估数据类型。
  • 问题不是 SSIS,而是 Excel 驱动程序。 SSIS 只是做它被告知的事情。 Excel 是一种糟糕的数据交换格式。 CSV(逗号分隔的文本文件)也是如此。制表符分隔要好得多。

标签: sql-server ssis ssms


【解决方案1】:

我能够使用的唯一解决方案是使用 Excel 宏来转换或另存为,作为制表符分隔的 .txt 文件并使用平面文件导入。

【讨论】:

    猜你喜欢
    • 2012-09-19
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多