【问题标题】:How can I make my SSIS job compatible with both XLS and XLSX files?如何使我的 SSIS 作业与 XLS 和 XLSX 文件兼容?
【发布时间】:2021-06-27 05:16:13
【问题描述】:

我创建了一个SSIS 包(使用 Windows Server 2012 上的数据工具),它从 Excel 文件中提取数据并将它们加载到 SQL 表中。它在开发环境(数据工具)和 SQL 作业中都能正常工作。注意:Microsoft Office 未安装在 Windows Server 机器上。但是,它确实安装了Access Database Engine 2010

唯一的问题是我的 Excel 文件需要采用 xls 格式(我猜是 32 位)。但是,我现在面临的情况是 Excel 文件将采用 XLSX 格式。所以,我需要让我的 SSIS 作业与这些文件兼容。

我对此问题进行了一些研究,并提出了以下博客和网页:

  1. SSIS package fails with error “If 64-bit driver not installed, run in 32-bit mode”
  2. How to install 64-bit Microsoft Database Drivers alongside 32-bit Microsoft Office
  3. Microsoft.ACE.OLEDB.12.0 is not registered

但是,我仍然对如何进一步处理我的问题感到困惑。

为了简化,解决方法如下:

  1. 在 Windows Server 上卸载 Access Database Engine 2010
  2. 安装AccessDatabaseEngine_X64.exe(64 位版本的 Access 数据库引擎)

或者还有更多?任何帮助将不胜感激。

注意:我现在的首要任务是让 SSIS 作业与 XLSX 文件一起工作(完美的情况是它可以与两个 Excel 文件版本一起工作)

【问题讨论】:

  • 测试,然后循环选择 XLS 或 XLSX。
  • 我不明白。你能详细说明一下吗?这不是选择一个/或的问题......我需要它来处理 xlsx 文件。
  • 你是说它需要同时处理这两个文件吗?或者你是说你为 cls 构建了它,但你需要它来使用 xlsx?
  • .xls.xlsx 文件是完全不同的文件格式,因此需要不同的“加载器”来处理它们。 .xls 文件(大部分)由 Microsoft 的 Compound File Binary File Format 描述。 .xlsx 的描述包含在 ECMA-376 Office Open XML formats 中。您将需要单独的数据流并根据文件扩展名在它们之间切换。
  • 您需要知道的第一件事是 SSDT 是一个 32 位应用程序,因此需要安装 32 位版本才能工作。这可能是也可能不是你的问题。我建议您创建一个新包并按照此步骤逐步进行docs.microsoft.com/en-us/sql/integration-services/…您应该知道的第二件事是excel是最糟糕的数据导入/交换格式,如果可以的话,您应该避免使用它

标签: sql-server excel ssis oledb


【解决方案1】:

抱歉,我没有设法发布代码。忙得不可开交。但是,我确实在另一个问题上回答了这个......

Best /Fastest way to read an Excel Sheet into a DataTable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多