azure-sql-database - 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 的步骤通常如下:
- 在暂存区删除并创建加载表
- 使用源数据库卸载实用程序(例如 Microsoft SQL Server bcp 或 DB2 卸载)或内置的 OdiSqlUnload 工具将数据从源卸载到临时平面文件。
- 生成加载实用程序所需的脚本以将临时文件加载到加载表。
- 执行相应的操作系统命令以启动加载并检查其返回码。
- 可能分析该实用程序生成的任何日志文件以进行错误处理。
- 集成 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
你能给我一些建议,我该如何处理它或类似的作品示例?
解决方案
推荐阅读
- c# - 无法转换 Type 'UnityEngine.Rigidbody' en 'UnityEngine.GameObject 并且没有 Addforce 的定义
- html - 滚动到页面顶部时删除粘滞页脚
- javascript - 如何通过这个简单的代码使用导入和导出?
- php - 统计并显示来自 SQL 的最近 10 天数据
- javascript - 我需要为我的游戏生成随机头像
- c++ - std::vector::data() 重新分配安全吗?
- java - 春季最佳选择
- python - 在连接了显示器的无头 linux 上运行 GUI
- prolog - CLP 中变量的暂定绑定
- google-chrome - 是否可以从 chrome 扩展创建无框屏幕可共享窗口对象?