Миграция данных из Oracle и преобразование из XML в JSon - PullRequest
0 голосов
/ 31 августа 2018

Может ли фабрика данных Azure преобразовать строку из Oracle (xml) в объект JSon для сохранения в коллекции в Cosmos как объект? Я пытался, но я получаю только строку (объект json) в качестве простого атрибута в базе данных Cosmos.

1 Ответ

0 голосов
/ 31 августа 2018

По моему опыту, фабрика данных Azure может передавать данные, но не поможет вам выполнить некоторые шаги сериализации. Итак, ваши данные, хранящиеся в cosmos db, могут выглядеть как "info": "{\"Id\":\"1\",\"Name\":\"AA\",\"Address\":\"HQ - Main Line\"}".

Чтобы справиться с этим решением, я предлагаю вам использовать Функция Azure Cosmos DB Trigger . Пожалуйста, обратитесь к моему коду:

using System;
using System.Collections.Generic;
using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Newtonsoft.Json.Linq;

namespace ProcessJson
{
    public class Class1
    {
        [FunctionName("DocumentUpdates")]
        public static void Run(
        [CosmosDBTrigger(databaseName:"db",collectionName: "item", ConnectionStringSetting = "CosmosDBConnection",LeaseCollectionName = "leases",
            CreateLeaseCollectionIfNotExists = true)]
        IReadOnlyList<Document> documents,
        TraceWriter log)
        {
            log.Verbose("Start.........");
            String endpointUrl = "https://***.documents.azure.com:443/";
            String authorizationKey = "***";
            String databaseId = "db";
            String collectionId = "import";

            DocumentClient client = new DocumentClient(new Uri(endpointUrl), authorizationKey);

            for (int i = 0; i < documents.Count; i++)
            {
                Document doc = documents[i];
                String info = doc.GetPropertyValue<String>("info");
                JObject o = JObject.Parse(info);

                doc.SetPropertyValue("info", o);

                client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri(databaseId, collectionId, doc.Id), doc);

                log.Verbose("Update document Id " + doc.Id);
            }
        }
    }
}

Кроме того, вы можете сослаться на мой предыдущий случай: Azure Cosmos DB SQL - как удалить внутреннее свойство json

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...