Лучший способ переноса (и преобразования) данных из хранилища таблиц Azure в Cosmos DB Sql API

avatar
lahsrah
9 августа 2021 в 06:50
161
2
0

У меня есть таблица Azure, в которой хранится объект Customer с вложенным адресным объектом, как показано ниже.

public class Customer {
   public Guid Id { get; set; }
   public string Name { get; set; }
   public Address Address { get; set; }
}

public class Address {
  public string AddressLine1 { get; set; }
  public string AddressLine2 { get; set; } 
  public string City { get; set; }
  public string Postcode { get; set; }
}

Объект "Клиент" сохраняется в таблице Azure со следующими столбцами:

Идентификатор Имя Address_AddressLine1 Address_AddressLine2 Адрес_Город Address_Postcode

Дочерний объект выравнивается и получает столбцы на том же уровне, что и хранилище таблиц, не поддерживающее вложенные объекты.

Я хочу перенести это в Cosmos DB SQL API. Как лучше всего перенести эти данные, чтобы получить вложенный документ json вместо плоского документа с этими столбцами подчеркивания?

Я хочу перенести эти данные, чтобы они выглядели примерно так в Cosmos:

{ 
  Id: 2fca57ec-8c13-4f2c-81c7-d6b649ca6296,
  Name: "John Smith",
  Address: {
    AddressLine1: '123 Street',
    AddressLine2: '',
    City: 'City',
    Postcode: '1234'
  }
 }

Я пытался использовать инструмент Cosmos Data Migration (устарел?) и фабрику данных Azure, но не смог понять, как преобразовать столбцы Address_* во вложенный объект Address, а не в виде плоских атрибутов в документе json.

Есть ли способ легко сопоставить его с вложенным дочерним объектом или мне придется написать собственный код для выполнения миграции?

Источник

Ответы (2)

avatar
Ranjith Eswaran
27 апреля 2022 в 12:21
0

Microsoft не предлагает простого решения (Azure Storage Explorer) для преодоления этой проблемы, но использование стороннего инструмента, такого как Cerebrata (https://cerebrata.com/), может помочь вам перенести данные из хранилища таблиц Azure в API SQL Cosmos DB в простой модели копирования/вставки.

Таким образом, вы также можете не тратить много времени на собственное кодирование, а также просматривать перенесенные данные в табличном формате, а не в сложном формате JSON.

Отказ от ответственности: это основано исключительно на моем опыте enter image description here

avatar
Kalyan Chanumolu-MSFT
12 августа 2021 в 10:54
0

К сожалению, готового решения для такого рода миграции не существует. Более простым вариантом было бы написать собственный код для циклического просмотра TableEntities, создания объекта документа и добавления элемента в контейнер Cosmos.