使用ODI SDK在Odi 12c中导入对象

时间:2016-12-19 15:26:05

标签: java oracle groovy oracle-data-integrator

我正在尝试使用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,但都不起作用。如果我遗失了什么,请帮忙。

感谢。

1 个答案:

答案 0 :(得分:1)

您应该使用importObjectFromXml代替SmartImport特定的importFromXml

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

pDeclareMissingRepository链接到11g中标识对象的方式,具有内部ID和存储库ID。导入时,将检查是否可以识别导出对象的存储库ID。我不认为它已经被使用了,但是对于你的使用,你可以安全地将值保持为真。