Azure Table 存储:用于为现有表填充新列的脚本

Azure Table Storage: a script to populate new column for existing tables

我的 Azure Table 存储中有一些表,需要部署一个脚本来为所有这些表填充空数据的新列。

我知道可以通过 PowerShell 完成一些管理,但我找不到任何有关如何执行此任务的相关示例或文档。

如有任何帮助,我们将不胜感激。

I have some tables in my Azure Table Storage and need to deploy a script to populate a new column with empty data for all of them.

基本上 Azure Table 是一个 key/value 对存储,因此它不能真正包含没有数据(值)的列(键)。这适用于所有支持的数据类型,但 String 数据类型除外,您可以在其中存储空字符串(它仍然不为空)作为键的值。

至于如何操作,您可以按照以下步骤操作:

  1. 获取您要为其添加密钥的实体。要减少响应负载,您可以简单地获取 PartitionKeyRowKey 属性。
  2. 对于您收到的每个实体,只需添加一个新属性即可。请确保属性的数据类型为 String 并将该属性的值设置为空字符串 ("").
  3. 最后您可能希望对这些实体调用 Merge Entity 操作。这将确保只会添加新属性。该实体中的所有其他现有属性将保持不变。

遗憾的是,我对 PowerShell 不太熟悉,无法提供准确的语法。但这应该给你足够的想法去开始。

关于PowerShell脚本,请参考以下代码:

Install-Module -Name AzTable

$groupName=""
$StorageAccountName = ""
$StorageAccountKey = ""
$vaule=" "
$context = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
$tables = Get-AzStorageTable -Context $context
Foreach($table in $tables){
    $table = Get-AzTableTable -storageAccountName $StorageAccountName -resourceGroup $groupName="" -TableName
    $entities=Get-AzTableRow -Table $table
    ForEach($e in $entities){
        $entity = New-Object Microsoft.Azure.Cosmos.Table.DynamicTableEntity($e.PartitionKey,$e.RowKey)
        $entity.Properties.Add("Name", $vaue)
        $table.Execute([Microsoft.Azure.Cosmos.Table.TableOperation]::InsertOrMerge($entity))
        Get-AzTableRow -Table $table -PartitionKey $e.PartitionKey -RowKey $e.RowKey
    }

}