首页 > 解决方案 > LKM 将数据从 Oracle 12c 加载到 Azure 上的 SQL 数据库的问题

问题描述

我尝试创建加载知识模块 (LKM),它将数据(大约 2 - 300 万行)从位于 Oracle(源服务)上的表传输到 Azure(暂存区)上的 MS SQL 数据库。所以我不能将 LKM SQL 用于 AZURE,因为它太慢了。

在手册中,我发现使用了最佳解决方案的信息:

5.1.3.3 使用卸载/加载加载

当源结果集位于远程数据库服务器上时,使用代理传输数据的替代解决方案是将其卸载到文件中,然后将该文件加载到暂存区域中。在处理跨异构技术的大量数据时,这通常是最有效的方法。例如,您可以使用 bcp 从 Microsoft SQL Server 源中卸载数据,并使用 SQL*Loader 将此数据加载到 Oracle 暂存区。遵循此策略的 LKM 的步骤通常如下:

  1. 在暂存区删除并创建加载表
  2. 使用源数据库卸载实用程序(例如 Microsoft SQL Server bcp 或 DB2 卸载)或内置的 OdiSqlUnload 工具将数据从源卸载到临时平面文件。
  3. 生成加载实用程序所需的脚本以将临时文件加载到加载表。
  4. 执行相应的操作系统命令以启动加载并检查其返回码。
  5. 可能分析该实用程序生成的任何日志文件以进行错误处理。
  6. 集成 KM 终止后删除加载表,并删除临时文件。

使用卸载/加载策略时,需要将数据暂存两次:一次在临时文件中,第二次在加载表中,导致额外的磁盘空间使用和潜在的效率问题。更有效的替代方法是在“卸载”和“加载”实用程序之间使用管道。不幸的是,并非所有操作系统都支持基于文件的管道 (FIFO)。

如果我正确理解上述注释(第 2、3、4 点),流程将如下所示:

Source table(Source Service) -> Flat file(Staging Area on Azure) -> Azure table(Staging Area on Azure)

我找到了 OdiSqlUnload对象,我尝试将数据卸载到文件中,然后按照:http: //odiexperts.com/calling-odisqlunload-using-odi-procedure-with-no-hardcoded-password/

我的设置: 在此处输入图像描述 在此处输入图像描述

但它不起作用。我收到一个错误:

Caused By: com.sunopsis.sql.SnpsMissingParametersException: ODI-30011: Parameter cannot be null:-DRIVER

你能给我一些建议,我该如何处理它或类似的作品示例?

标签: azure-sql-databaseetloracle12coracle-data-integrator

解决方案


推荐阅读