0

我正在尝试使用 Groovy 脚本和 ODI SDK 自动导入 ODI 12c 中的映射 (XML)。但是我的代码只是继续运行而没有任何结果。这是我的代码。

txnDef = new DefaultTransactionDefinition()
tm = odiInstance.getTransactionManager()
tme = odiInstance.getTransactionalEntityManager()
txnStatus = tm.getTransaction(txnDef)
ImportServiceImpl importSrv = new ImportServiceImpl(odiInstance);
importSrv.importObjectFromXml(importSrv.IMPORT_MODE_SYNONYM_INSERT, filename, parentObj, true, null, true);
tm.commit(txnStatus)

代码会无限期地运行,直到我手动终止程序。我不明白有什么问题。链接到 javadoc:https://docs.oracle.com/middleware/1213/odi/reference-java-api/oracle/odi/impexp/IImportService.html#importObjectFromXml(int,%20java.lang.String,%20boolean, %20char[],%20boolean)

而且,我不明白方法中的第四个参数

void importObjectFromXml(int pImportMode,
                   java.lang.String pFileName,
                   IImportRoot pObjectParent,
                   boolean pDeclareMissingRepository,
                   char[] pExportKey,
                   boolean pImportWithoutCipherData)
                     throws OdiImportNotSupportedException,
                            OdiImportException,
                            java.io.IOException

我尝试对 pDeclareMissingRepository 使用 true 和 false ,但没​​有一个有效。如果我遗漏了什么,请帮忙。

谢谢。

4

1 回答 1

1

您应该使用特定于SmartImportimportObjectFromXml的而不是。importFromXml

尝试 importSrv.importObjectFromXml(IImportService.IMPORT_MODE_SYNONYM_INSERT, filename, parentObj, true, null, true)

pDeclareMissingRepository 与 11g 中标识对象的方式相关联,具有内部 ID 和存储库 ID。导入时,它会检查是否可以识别导出对象的存储库 ID。我认为它已不再使用,但对于您的使用,您可以放心地将值保留为 true。

于 2016-12-19T16:36:05.850 回答