是否有可用的工具将Azure Table存储迁移到Cosmos DB以使用Table API进行访问?我发现Data Migration Tool但它只支持通过Document API访问表存储。
更新:我尝试将数据工厂复制数据功能从表存储复制到文档数据库(我猜它现在是cosomosDb)。但它并没有将任何数据复制到Cosmos DB,尽管Data Factory管道说它复制了大量的数据,但我没有看到Target Cosmos Db Table中的任何实体。
迁移到Cosmos DB并使用Table API的最佳方法是什么?
答案 0 :(得分:3)
迁移到Cosmos DB并使用Table API的最佳方法是什么?
如果我理解正确,您希望将Azure表存储迁移到Cosmos表API DB。如果是这种情况并且可以使用程序,我们可以使用Azure提供的Windows Azure Storage Premium Table SDK来实现。这是一个预览版。以下是我的演示代码,它可以正常工作。
1.我们需要实现 TableEntity 并添加我们的自定义属性。属性为private static final char[] VOWELS = { 'a', 'e', 'i', 'o', 'u' };
public boolean startsWithVowel(String s) {
char first=s.charAt(0);
for (char c : VOWELS) if (c==first) return true;
return false;
}
case sensitive
2.添加获取表格功能
public class CustomerEntity : TableEntity
{
public CustomerEntity() { }
public Type tableEntityProperty { get; set; }
...
}
3.尝试从Azure存储表中查询表实体,并将其添加到Azure cosmos表。
public static CloudTable GetTable(string connectionstring,string tableName)
{
CloudStorageAccount destStorageAccount = CloudStorageAccount.Parse(connectionstring);
CloudTableClient destTableClient = destStorageAccount.CreateCloudTableClient();
CloudTable destTable = destTableClient.GetTableReference(tableName);
destTable.CreateIfNotExists();
return destTable;
}
packages.config
var sourceConnectionString = "DefaultEndpointsProtocol=https;AccountName=storageName;AccountKey=yourkey;EndpointSuffix=core.windows.net";
var destConnectionstring = "DefaultEndpointsProtocol=https;AccountName=cosmostableAPIAccount;AccountKey=yourkey;TableEndpoint=https://tomtableapi.documents.azure.com";
CloudTable sourceTable = GetTable(sourceConnectionString, "source table");
CloudTable destTable = GetTable(destConnectionstring, "dest table");
TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>();
foreach (CustomerEntity entity in sourceTable.ExecuteQuery(query))
{
TableOperation insertOperation = TableOperation.Insert(entity);
// Execute the insert operation.
destTable.Execute(insertOperation);
}