使用Talend Open Studio将JSON写入字段
我尝试将旧数据库中的数据迁移到新应用程序中 在这个过程中,我需要从旧数据库中获取数据以创建一个JSON,该JSON必须存储在新的MySQL数据库中的一个字段中 因此,我使用组件使用Talend Open Studio将JSON写入字段,json,talend,Json,Talend,我尝试将旧数据库中的数据迁移到新应用程序中 在这个过程中,我需要从旧数据库中获取数据以创建一个JSON,该JSON必须存储在新的MySQL数据库中的一个字段中 因此,我使用组件tWriteJSONField和textracjsonfields 在tWriteJSONField中,我的XML树如下所示: path |-- id [loop element] |-- name |-- description { "id": "123" } path |-- id [loop element
tWriteJSONField
和textracjsonfields
在tWriteJSONField
中,我的XML树如下所示:
path
|-- id [loop element]
|-- name
|-- description
{
"id": "123"
}
path
|-- id [loop element] --> IdForm
|-- name --> NomForm
|-- description --> DescrForm
注意:我找不到如何使用循环元素
和组元素
属性。我不明白它是如何工作的,文档中也没有提到这一点
组件tWriteJSONField
链接到textracJSonfields
,以便从JSON中提取id
。我需要知道JSON必须链接到每个记录
tExtractJSONFields
configuration:XPath请求
"/path"
textracjsonfields
配置:映射
-----------------------------------------------
| column | XPath request | get nodes ? |
-----------------------------------------------
| idForm | "id" | false |
-----------------------------------------------
| jsonStructure | "*" | yes |
-----------------------------------------------
我的问题在于jsonStructure
通过textracjsonfield
输出,我只得到根标记的第一个子项。在我的例子中,jsonStructure
如下所示:
path
|-- id [loop element]
|-- name
|-- description
{
"id": "123"
}
path
|-- id [loop element] --> IdForm
|-- name --> NomForm
|-- description --> DescrForm
预期结果是:
{
"id": "123",
"name": "Test",
"description": "Test"
}
例如,如果我在id
之前声明子名称
,我将得到:
{
"name": "Test"
}
我试图更改jsonStructure
的XPath查询,但从未获得所有字段
为什么?
这是我关于Talend的第一个问题,如果它缺少信息,请在评论中告诉我
谢谢你的帮助
编辑:
数据从tMysqlInput
到tWriteJSONField
:
注意:我的通量包含更多的列,但我只向您展示用于创建JSON的列
tWriteJSONField
输出一个与输入相同列的新流量(尽管这些列在输出中都是空的,即使它们是在输入中填充的),并添加一个新的jsonStructure
,其中包含生成的JSON
这个新的流量被一个textracjsonfields
捕获(这个组件的配置可以在我的原始帖子中找到)
tExtractJSONFields
输出此流量:
--------------------------
| IdForm | jsonStructure |
--------------------------
| 1 | { "id": "1" } |
--------------------------
| 2 | { "id": "2" } |
--------------------------
| 3 | { "id": "3" } |
--------------------------
我希望它会返回这个:
--------------------------------------------------------------------------------------------
| IdForm | jsonStructure |
--------------------------------------------------------------------------------------------
| 1 | { "id": "1", "name": "English training", "description": "<p>This is[...]</p>" } |
--------------------------------------------------------------------------------------------
| 2 | { "id": "2", "name": "French training", "description": "<p>[...]</p>" } |
--------------------------------------------------------------------------------------------
| 3 | { "id": "3", "name": "How to use the [...]", "description": "<p>[...]</p>" } |
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
|IdForm|json结构|
--------------------------------------------------------------------------------------------
||{“id”:“1”,“name”:“English training”,“description”:“这是[…]”}|
--------------------------------------------------------------------------------------------
|2{“id”:“2”,“姓名”:“法语培训”,“描述”:“[…]””}|
--------------------------------------------------------------------------------------------
|3 |{“id”:“3”,“name”:“如何使用[…]”,“description”:“[…]””}|
--------------------------------------------------------------------------------------------
编辑2
如果可以的话,我使用TOS 5.4.0.r110020。您对JSONStructure列的XPath请求不正确。只需删除“*”即可获得预期结果 此外,如果json条目中不需要根节点,只需选中tWriteJsonField上的“Remove root node”,并将tExtractJSONFields中的循环XPath查询更改为“/”
哇!没有测试就很难回答这个问题。您能提供一个输出JSON和输入数据的示例吗?用伪造的数据,ofc。请耐心等待几个小时!;)谢谢你的帮助。我已经编辑了我的帖子以添加更多细节。希望足够了,谢谢。我花了很多时间在这件事上。