我是ODI(Oracle Data Integrator)11g的新手。我有XML文件。我需要将数据从该XML文件加载到Oracle数据库中。我创建了项目,导入了知识模块,创建了XML和Oracle模型。
目标数据存储区目前仅存储1个表。
答案 0 :(得分:1)
修改
基于注释,这是一种加载多个“相同xsd” xml文件的方法。
首先,必须确保所有XML都具有相同的XSD结构,否则可能会遇到奇怪的行为。
要处理多个XML文件,基本上这是您必须要做的:
1)您提供一个特定的固定XML名称,并基于该名称创建拓扑。 2)创建一个“文件处理控件”以重命名并在读取之前移动文件。 3)确保您执行正确的“同步”命令
示例
您有XML文件:
/path/in/XML001.XML
/path/in/XML002.XML
/path/in/XML003.XML
将其中一个文件另存为XML_DATA.xml,并在某些“ / work /”路径中使用XML_DATA.xml设置拓扑,并通过测试验证其是否正确。
处理循环,其中:
1)将/path/in/XML001.XML移至/path/work/XMLDATA.XML(覆盖或删除旧的XMLDATA)
2)执行“从文件同步”
3)处理您的界面
4)执行“从数据库同步”
5)将已处理的XML移至“ / path / processed /”
您的包裹将类似于:
[循环]> [MoveFile]> [ProcedureSync]> [接口]> [ProcedureSync]> [MoveFile]> [EndLoop]
关于Loop控件,有几种方法可以实现,如果您不确定我是否可以向您发送提示。
希望有帮助!
编辑2
基于新信息,我将尝试对提出的问题进行更好的解释。这不是一个艰巨的任务,但是对于仍然了解ODI工具的人来说,听起来可能很难。
要点是要了解,对于ODI而言,XML文件就像数据库一样是数据源,而不是.csv这样的文件。
1)处理XML文件时使用同步的示例。
每次访问XML文件进行读写时,建议按照以下步骤进行操作:
2)文件处理控制
在“工具包”工具栏中的“包”中,有一个“文件”工具栏,可为您提供许多有用的文件工具,例如复制,删除,移动,压缩,解压缩等。当您需要“控制”您正在读取,重命名等的文件。
您可以使用这些工具进行一些操作,它们非常易于理解。
3)循环控制
在ODI中,您可以使用包中的变量来开发循环。有时,您可以仅使用odi过程来处理循环,这取决于您的需求。根据我所掌握的有关您的上下文的一些信息,建议您首先尝试使用变量。
这是一个处理5次循环的示例。
1)创建一个数字变量。
2)将其拖到包中并将其值设置为0。
3)再次拖动它,将其配置为评估,将条件设置为等于5。
4)拖动任何您拥有的“测试”界面。
5)将KO Link链接到接口。使用评估变量时,KO链接的行为类似于“假”条件。在我们的例子中,如果计数器<5,它将指向接口。
6)再次拖动变量,这一次不是设置固定值,而是将增量设置为1。这将为该值加1。
7)将最后一个变量链接到评估变量。
因此,它将运行5次测试界面。我在互联网上发现一张图片,说明了这一点:
您可以在“ https://dzone.com/articles/odi-11g-implementing-loops”和“ https://blogs.oracle.com/dataintegration/using-variables-in-odi:-creating-a-loop-in-a-package”中找到有用的信息。
最终套餐
最终,您的“算法”将如下所示:
1)处理文件夹中文件的循环(这有点棘手,它可能需要一个jython代码,您可以在此处找到一个引用“ https://blogs.perficient.com/2014/08/01/looping-through-files-in-a-folder-using-odi/”)
2)将第一个文件移至/work/OMDATASOURCE.xml
3)SYNCHRONIZE FROM DATABASE命令。
4)处理您的界面
5)从文件同步。
6)将OMDATASOURCE.xml移至“ /已处理”或您创建的任何其他控件。
7)处理下一个文件。您可能还希望使用表格来控制某些内容,例如读取的文件,处理的文件等。
8)结束循环(使用我发送的循环控制示例)。
ODI非常灵活且可扩展,您可以用很多方法来做所有事情。
注意事项
希望这会有所帮助,[]的
欢呼