将表部署到表存储的最佳方法

时间:2017-11-03 08:27:23

标签: powershell azure azure-table-storage

你能否告诉我,进行表存储部署的最佳方式是什么,因为我的开发团队要求他们有很多表,每个表都有数千个条目。因此,他们要求我咨询任何表。微软团队或博客人员检查表存储部署的最佳方式。你知道我们怎么做,因为脚本每次都会耗尽并插入数千个条目。

我们是否有任何delta方法,因为它将首先检查所有表条目,如果存在,那么它应该只是添加新添加的条目,这些条目由开发团队添加到csv文件中,我们只需将这些条目更新到表中存储。这就是它。这是一种方法。你有什么最好的方法。请帮助我。

1 个答案:

答案 0 :(得分:0)

TableBatchOperation类中有 InsertOrReplace(ITableEntity)方法可以使用 ExecuteBatch 方法进行批处理操作,请尝试使用以下代码:

         param(
                 [object[]]$fileObj
                )

            $storageAccountName = "XXX"

            $tableName="XXX"

            # Get the storage key for the storage account
            $StorageAccountKey = "XXX"

            # Get a storage context
            $ctx = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

            foreach($fo in $fileObj){
             Write-Host $fo.filepath
             $csv = Import-CSV $fo.filepath
              $cArray=$fo.Cols.split(",")
        $table = Get-AzureStorageTable -Name $fo.tableName -Context $ctx -ErrorAction Ignore
              [Microsoft.WindowsAzure.Storage.Table.TableBatchOperation]$batchOperation = New-Object -TypeName Microsoft.WindowsAzure.Storage.Table.TableBatchOperation

if($table)
{
Write-Host "table not null"
}
else
{
Write-Host "table is null"
}
if($table.CloudTable)
{
Write-Host "CloudTable not null"
}
else
{
Write-Host "CloudTable is null"
}

foreach($line in $csv)
                {

                Write-Host "$($line.partitionkey), $($line.rowKey)"
                $entity = New-Object -TypeName Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity -ArgumentList $line.partitionkey, $line.rowKey 
                    foreach($c in $cArray){
                 Write-Host "$c,$($line.$c)"
                    $entity.Properties.Add($c,$line.$c)
             $batchOperation.Insert($entity)

                    }       
             }
if($batchOperation)
{
Write-Host "batchOperation not null"
}
else
{
Write-Host "batchOperation is null"
}
    $table.CloudTable.ExecuteBatch($batchOperation)
            }