का उपयोग कर जेएसओएन को एक फ़ील्ड में लिखें, मैं डेटा को हमारे नए एप्लिकेशन में पुराने डेटाबेस को माइग्रेट करने का प्रयास करता हूं।Talend ओपन स्टूडियो
प्रक्रिया में, मुझे एक JSON बनाने के लिए पुराने डीबी से डेटा को पकड़ने की आवश्यकता है जिसे नए MySQL डीबी में किसी फ़ील्ड में संग्रहीत किया जाना चाहिए।
तो मैं घटक tWriteJSONField
और tExtractJSONFields
का उपयोग करता हूं।
tWriteJSONField
में, मेरा एक्सएमएल पेड़ इस तरह दिखता है:
path
|-- id [loop element]
|-- name
|-- description
N.B. : मुझे loop element
और group element
गुणों का उपयोग करने का तरीका नहीं मिल रहा है। मुझे समझ में नहीं आता कि यह कैसे काम करता है और दस्तावेज़ीकरण इस बारे में बात नहीं करता है।
घटक tWriteJSONField
JSON से id
निकालने के लिए tExtractJSONFields
से जुड़ा हुआ है। मुझे यह जानने की ज़रूरत है कि प्रत्येक रिकॉर्ड JSON को लिंक किया जाना चाहिए।
tExtractJSONFields
विन्यास: XPath अनुरोध
"/path"
tExtractJSONFields
विन्यास: मानचित्रण
-----------------------------------------------
| column | XPath request | get nodes ? |
-----------------------------------------------
| idForm | "id" | false |
-----------------------------------------------
| jsonStructure | "*" | yes |
-----------------------------------------------
मेरे समस्या tExtractJSONField
द्वारा jsonStructure
उत्पादन में है, मैं सिर्फ अपने रूट टैग की पहली संतान प्राप्त । मेरे मामले में jsonStructure
इस तरह दिखता है:
{
"id": "123"
}
अपेक्षित परिणाम है:
{
"id": "123",
"name": "Test",
"description": "Test"
}
अगर मैं उदाहरण के लिए id
से पहले बच्चे name
घोषित, मैं मिल जाएगा:
{
"name": "Test"
}
मेरे पास है jsonStructure
के लिए XPath क्वेरी को बदलने का प्रयास किया लेकिन मुझे कभी भी सभी फ़ील्ड नहीं मिलते हैं।
क्यों?
यह Talend के बारे में मेरा पहला सवाल है, इसलिए यदि इसमें जानकारी की कमी है, तो मुझे टिप्पणियों में बताएं।
सहायता के लिए धन्यवाद।
संपादित करें:
डाटा tMysqlInput
से tWriteJSONField
रहे हैं:
N.B. : मेरे प्रवाह में अधिक कॉलम हैं लेकिन मैं केवल आपको दिखाता हूं जिसका उपयोग JSON बनाने के लिए किया जाता है।
---------------------------------------------------------------------------------------
| IdForm | NomForm | DescrForm |
---------------------------------------------------------------------------------------
| 1 | English training | <p>This is a description of the training</p> |
---------------------------------------------------------------------------------------
| 2 | French training | <p>This contains HTML tags from a WYSIWYG</p> |
---------------------------------------------------------------------------------------
| 3 | How to use the application | <p>Description</p> |
---------------------------------------------------------------------------------------
tWriteJSONField
में, कॉलम इस तरह JSON पर मैप किए जाते:
path
|-- id [loop element] --> IdForm
|-- name --> NomForm
|-- description --> DescrForm
tWriteJSONField
उत्पादन इनपुट के रूप में एक ही कॉलम के साथ एक नया प्रवाह (हालांकि, इस कॉलम सभी उत्पादन में खाली हैं भले ही वे इनपुट में आबादी में थे) और एक नया jsonStructure
जोड़ें जिसमें जेनरेट जेएसओएन शामिल है।
यह नया प्रवाह tExtractJSONFields
द्वारा पकड़ा गया है (इस घटक के लिए कॉन्फ़िगरेशन मेरे मूल पोस्ट में उपलब्ध है)।
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>" } |
--------------------------------------------------------------------------------------------
संपादित 2
मैं टीओएस 5.4.0.r110020 का उपयोग करता है, तो यह कर सकते हैं मदद।
वाह! परीक्षण के बिना जवाब देना मुश्किल है। क्या आप अपने जेएसओएन और आपके इनपुट डेटा का नमूना प्रदान कर सकते हैं? नकली डेटा के साथ, ओसीसी। और कृपया कुछ घंटों तक धीरज रखो! ;) –
मदद के लिए धन्यवाद। मैंने अधिक जानकारी जोड़ने के लिए अपनी पोस्ट संपादित की है। उम्मीद है कि यह पर्याप्त है। – Elorfin