如何使用talend

时间:2017-11-11 07:24:42

标签: sql-server talend

我是Talend的新手,在使用txmlmap时我遇到了问题。

我有一个XML文件,我需要将该XML中的数据插入到SQL Server中。我在Talend中建立连接以连接到SQL Server,但是在确定XML标记的优先级时我遇到了一些问题。

这是我的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <entry name="opertaion-round-title">
        <valstr>ROUND 1</valstr>
    </entry>
    <entry name="site">
        <valstr>SITE NAME</valstr>
    </entry>
    <entry name="plant">
        <valstr>PLANT NAME</valstr>
    </entry>
    <entry name="opertaion-area">
        <valstr>G AREA</valstr>
    </entry>
</data>

我正在使用txmlMap将数据从XML传递到数据库。我有四张桌子。我需要根据条目标记(名称)放置值。

SITES,
PLANTS,
OPERATING_AREAS,
OPERATING_ROUNDS

我需要将站点值放入SITES表,将植物值放入PLANTS表,将操作区域值放入OPERATING_AREAS表,将操作舍入标题放入OPERATING_ROUNDS表。

我成功获取表中的值,但是我首先想要将站点值插入到SITES表中,然后在PLANTS表中插入植物值,然后是OPERATING_AREAS和OPERATING_ROUNDS表。

我面临的问题是,无论xml首次出现什么值,它都会插入到该表中。即在这种情况下,它首先将值插入OPERATING_ROUNDS表,因为xml中的第一个标记是<entry name="opertaion-round-title">。但我想按以下顺序

SITES
PLANTS
OPERATING_AREAS
OPERATING_ROUNDS

那么无论如何我们可以在txmlMap中设置标签执行的优先级,这样无论先发生什么标签,它都会根据我们定义的优先级处理标签。

请查看

的附加屏幕截图

design of components

txmlMap configuration

1 个答案:

答案 0 :(得分:1)

如果我没有弄错的话,你可能需要过度思考你认为处理数据的方式:

  • 首先,您将遍历XML文件(如果data部分中有更多条目)
  • 然后你会做一些映射。通常,这发生在输入组件中。所以这就是你说的#34;我有一个名为SITES的行变量,它应该填充data / sites / valstr&#34;的内容。没有映射的图片,所以这很难猜测
  • 您的行将填充4个值,即您记下的4个
  • 然后你只需将它们分成你创建的四个桶(输出组件到数据库中)

意思是,不需要预先进行。您只需要确保映射是正确的,然后您也可以在tMap中执行此操作。