使用Talend Open Studio将JSON写入字段

 wuzhi61448 发布于 2023-02-11 12:35

我尝试将旧数据库中的数据迁移到我们的新应用程序中.

在进程中,我需要从旧数据库中获取数据以创建必须存储在新MySQL数据库中的字段中的JSON.

所以我使用组件tWriteJSONFieldtExtractJSONFields.

tWriteJSONField,我的XML树看起来像这样:

path
|-- id [loop element]
|-- name
|-- description

注意:我找不到如何使用loop elementgroup 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的第一个问题,所以如果它缺少信息,请在评论中告诉我.

感谢帮助.

编辑:

从数据tMysqlInputtWriteJSONField:

注意:我的通量包含更多列,但我只显示用于创建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,如果它可以帮助.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有