你能否告诉我,进行表存储部署的最佳方式是什么,因为我的开发团队要求他们有很多表,每个表都有数千个条目。因此,他们要求我咨询任何表。微软团队或博客人员检查表存储部署的最佳方式。你知道我们怎么做,因为脚本每次都会耗尽并插入数千个条目。
我们是否有任何delta方法,因为它将首先检查所有表条目,如果存在,那么它应该只是添加新添加的条目,这些条目由开发团队添加到csv文件中,我们只需将这些条目更新到表中存储。这就是它。这是一种方法。你有什么最好的方法。请帮助我。
答案 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)
}