Лучший подход для развертывания таблиц в хранилище таблиц

Дайте мне знать, каков наилучший способ развертывания хранилища таблиц, так как моя команда разработчиков спрашивает, что у них много таблиц, в каждой из которых тысячи записей. Поэтому они просят меня проконсультироваться с любой командой Microsoft или блогерам, чтобы проверить лучший способ развертывания хранилища таблиц. У вас есть идея, как мы можем это сделать, так как скрипты будут выполнять удаление и вставку тысячи записей каждый раз.

есть ли у нас какой-либо дельта-подход, как если бы он сначала проверял все записи в таблицах, и, если они существуют, он должен просто добавлять вновь добавленные записи, которые добавляются в файлы csv командой разработчиков, только те записи, которые нам нужно обновить, в хранилище таблиц. Это один из подходов. У вас есть лучший подход. Пожалуйста, помогите мне.

1 ответ

Решение

В классе 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)
            }
Другие вопросы по тегам