当前位置: 首页 > 知识库问答 >
问题:

将数据从Azure表存储迁移(和转换)到Cosmos DB Sql API的最佳方式

申黎明
2023-03-14

我有一个 Azure 表,它存储了一个客户对象,其中包含一个嵌套的地址对象,如下所示。

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表中,其中包含如下列:

子对象被扁平化并获得与表存储不支持嵌套对象相同级别的列。

我想将其迁移到 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 数据迁移工具(已弃用?)和 Azure 数据工厂,但无法弄清楚如何将 Address_* 列转换为嵌套的地址对象,而不是最终成为 json 文档中的平面属性。

有没有一种方法可以轻松地将它映射到嵌套的子对象,或者我必须编写自定义代码来执行迁移?

共有2个答案

郭修平
2023-03-14

Microsoft(Azure存储资源管理器)没有提供简单的解决方案来克服这一挑战,但利用第三方工具(如https://cerebrata.com/)可以帮助您通过简单的复制/粘贴模型将数据从Azure表存储迁移到Cosmos DBSQLAPI。

通过这种方式,您还可以避免在自定义编码上花费大量时间,还可以以表格格式而不是复杂的 JSON 格式查看迁移的数据。

伊羽
2023-03-14

不幸的是,这种迁移没有现成的解决方案。更简单的方法是编写自定义代码来遍历TableEntities,构造文档对象,并将项添加到Cosmos容器中。

 类似资料:
  • 我有一个appengine数据存储,我想迁移到google cloud BigTable。最好的方法是什么? 谢谢你的回答,Yanice

  • 我必须以JSON格式转换数据表单以发送到webAPI。 我有一个从第1页调用的弹出表单: 第1页有以下代码: 输出JSON不正确。代码返回如下字符串: ! DOCTYPE html 什么是最好的方法来字符串化输入数据?我哪里错了?

  • 我们将Google Cloud Datastore用于Google App Engine(GAE)应用程序。在我们的项目改造期间,我们希望将数据库从Datastore迁移到Google CloudSQL。 我们在数据存储中约有1 TB数据,不包括索引。 如何从数据存储迁移到云SQL,是否有任何现有的开源解决方案可用于此。 我已经检查了下面的一个https://cloud.google.com/da

  • 目前需求就是将mysql的表结构及数据迁移到pgsql. 我用的方案是使用navicate 同步数据及结构到pg, 有如下问题: mysql中的索引直接丢失了 不知道为啥一直报错表找不到 对于默认值 pgsql也丢失了 请问大家有什么好的实践吗? 我考虑的是 直接使用数据库迁移 将数据库脚本转化为pg的语法

  • 我维护这个Django web应用程序,用户聚集在一起并相互聊天。如果愿意,他们也可以发布照片。我处理这些照片(即优化它们的大小),并将它们存储在Amazon S3存储桶中(就像Azure存储中的“容器”)。为此,我在Amazon上设置了bucket,并在设置中包含以下配置代码。py: 另外和安装在我的虚拟环境中。Boto是一个Python包,提供Amazon Web Services的接口,而d

  • 我的问题是,创建一个待完成的数据表和另一个已完成的数据表是好的实践吗?或者我应该只制作一个包含两种类型数据的表,并按状态区分?