Eski bir veri tabanını yeni uygulamamıza taşımaya çalışıyorum.JSON'u Talend Open Studio kullanarak bir alana yaz.
süreçte, yeni MySQL db bir tarlada saklanmalıdır bir JSON yaratmak için eski db veri kapmak gerekir.
yüzden bileşenleri tWriteJSONField
ve tExtractJSONFields
kullanın. tWriteJSONField
yılında
, benim XML ağaç gibi görünür:
path
|-- id [loop element]
|-- name
|-- description
N.B. : loop element
ve group element
özelliklerinin nasıl kullanılacağını bulamıyorum. Nasıl çalıştığını anlamıyorum ve belgeler bunun hakkında konuşmuyor.
tWriteJSONField
bileşeni, id
ürününü JSON'dan ayıklamak için tExtractJSONFields
'a bağlanır. Her kaydın JSON'a bağlı olduğunu bilmem gerekiyor.
tExtractJSONFields
yapılandırma: XPath isteği
"/path"
tExtractJSONFields
yapılandırma: Haritalama
-----------------------------------------------
| column | XPath request | get nodes ? |
-----------------------------------------------
| idForm | "id" | false |
-----------------------------------------------
| jsonStructure | "*" | yes |
-----------------------------------------------
Sorunum tExtractJSONField
tarafından jsonStructure
çıktıda, ben sadece benim kök Etiketin ilk çocuğu olsun . Benim durumumda jsonStructure
şuna benzer:
{
"id": "123"
}
Beklenen sonuç: Ben mesela id
önce çocuğu name
bildirirseniz
{
"id": "123",
"name": "Test",
"description": "Test"
}
, alacağım:
{
"name": "Test"
}
Ben jsonStructure
için XPath sorgusunu değiştirmeyi denedim, ancak tüm alanları asla alamıyorum.
Neden?
Bu Talend hakkında benim ilk soru, bu yüzden bilgilere sahip değilse, bana yorum olarak bildirin.
Yardımlarınız için teşekkürler.
DÜZENLEME:
Veri tMysqlInput
den tWriteJSONField
için:
N.B. : Akım daha fazla sütun içeriyor, ancak sadece JSON'u oluşturmak için kullanılanları gösteriyorum.tWriteJSONField
olarak
---------------------------------------------------------------------------------------
| 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> |
---------------------------------------------------------------------------------------
, sütunlar böyle JSON eşlenir:
path
|-- id [loop element] --> IdForm
|-- name --> NomForm
|-- description --> DescrForm
tWriteJSONField
çıkış girişi ile aynı sütun ile yeni bir akı (bu kolonlar her çıkış boş olmasına rağmen Girdi olarak doldurulmuş olsalar bile) ve oluşturulan JSON'u içeren yeni bir jsonStructure
ekleyin.
Bu yeni akı tExtractJSONFields
tarafından yakalandı (bu bileşenin yapılandırması, özgün gönderiimde kullanılabilir).
tExtractJSONFields
çıkışlar bu akı:
--------------------------
| IdForm | jsonStructure |
--------------------------
| 1 | { "id": "1" } |
--------------------------
| 2 | { "id": "2" } |
--------------------------
| 3 | { "id": "3" } |
--------------------------
Ve bunu beklemek döndüren bu bir:
--------------------------------------------------------------------------------------------
| 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>" } |
--------------------------------------------------------------------------------------------
DÜZENLEME 2
elinden eğer TOS 5.4.0.r110020 kullanmak yardım et.
wow! test etmeden cevap vermek zor. Dışarıdaki JSON ve giriş verilerinizin bir örneğini sağlayabilir misiniz? Sahte verilerle, Ve lütfen birkaç saat sabırlı ol! ;) –
Yardımlarınız için teşekkürler. Daha fazla ayrıntı eklemek için yayınımı düzenledim. Umarım yeterlidir. – Elorfin