我尝试将旧数据库中的数据迁移到我们的新应用程序中.
在进程中,我需要从旧数据库中获取数据以创建必须存储在新MySQL数据库中的字段中的JSON.
所以我使用组件tWriteJSONField
和tExtractJSONFields
.
在tWriteJSONField
,我的XML树看起来像这样:
path |-- id [loop element] |-- name |-- description
注意:我找不到如何使用loop element
和group element
属性.我不明白它是如何工作的,文档没有谈到这一点.
该组件tWriteJSONField
链接到a tExtractJSONFields
以便id
从JSON中提取.我需要知道每个记录JSON必须链接.
tExtractJSONFields
配置:XPath请求
"/path"
tExtractJSONFields
配置:映射
----------------------------------------------- | column | XPath request | get nodes ? | ----------------------------------------------- | idForm | "id" | false | ----------------------------------------------- | jsonStructure | "*" | yes | -----------------------------------------------
我的问题是jsonStructure
输出tExtractJSONField
,我只得到我的root标签的第一个孩子.在我的情况下jsonStructure
看起来像这样:
{ "id": "123" }
预期结果是:
{ "id": "123", "name": "Test", "description": "Test" }
如果我name
之前宣布这个孩子id
,我会得到:
{ "name": "Test" }
我试图更改XPath查询,jsonStructure
但我从来没有得到所有字段.
为什么?
这是我关于Talend的第一个问题,所以如果它缺少信息,请在评论中告诉我.
感谢帮助.
编辑:
从数据tMysqlInput
到tWriteJSONField
:
注意:我的通量包含更多列,但我只显示用于创建JSON的列.
--------------------------------------------------------------------------------------- | IdForm | NomForm | DescrForm | --------------------------------------------------------------------------------------- | 1 | English training |This is a description of the training
| --------------------------------------------------------------------------------------- | 2 | French training |This contains HTML tags from a WYSIWYG
| --------------------------------------------------------------------------------------- | 3 | How to use the application |Description
| ---------------------------------------------------------------------------------------
在tWriteJSONField
,列映射到JSON,如下所示:
path |-- id [loop element] --> IdForm |-- name --> NomForm |-- description --> DescrForm
tWriteJSONField
输出与输入具有相同列的新通量(尽管这些列在输出中都是空的,即使它们已在输入中填充)并添加jsonStructure
包含生成的JSON 的新列.
这个新的通量被a捕获tExtractJSONFields
(该组件的配置在我的原始帖子中可用).
tExtractJSONFields
输出这个通量:
-------------------------- | IdForm | jsonStructure | -------------------------- | 1 | { "id": "1" } | -------------------------- | 2 | { "id": "2" } | -------------------------- | 3 | { "id": "3" } | --------------------------
我期待它返回这个:
-------------------------------------------------------------------------------------------- | IdForm | jsonStructure | -------------------------------------------------------------------------------------------- | 1 | { "id": "1", "name": "English training", "description": "This is[...]
" } | -------------------------------------------------------------------------------------------- | 2 | { "id": "2", "name": "French training", "description": "[...]
" } | -------------------------------------------------------------------------------------------- | 3 | { "id": "3", "name": "How to use the [...]", "description": "[...]
" } | --------------------------------------------------------------------------------------------
编辑2
我使用TOS 5.4.0.r110020,如果它可以帮助.