【发布时间】: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 作业与这些文件兼容。
我对此问题进行了一些研究,并提出了以下博客和网页:
- SSIS package fails with error “If 64-bit driver not installed, run in 32-bit mode”
- How to install 64-bit Microsoft Database Drivers alongside 32-bit Microsoft Office
- Microsoft.ACE.OLEDB.12.0 is not registered
但是,我仍然对如何进一步处理我的问题感到困惑。
为了简化,解决方法如下:
- 在 Windows Server 上卸载
Access Database Engine 2010 - 安装
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