2017-11-03 2 views
-1

Lassen Sie mich wissen, was ist der beste Weg, Tabellenspeicher Bereitstellung zu tun, wie mein Entwickler-Team fragt, dass sie viele Tabellen haben, von denen jede Tabelle Tausende von Einträgen hat Sie fragen mich, ob ich ein Microsoft-Team oder Blog-Leute konsultiere, um die beste Methode für die Bereitstellung von Tabellenspeichern zu überprüfen. Haben Sie eine Idee, wie wir tun können, wenn die Skripte jedes Mal Tausende von Einträgen löschen und einfügen.Der beste Ansatz zum Bereitstellen von Tabellen in Tabellenspeicher

haben wir einen Delta-Ansatz, wie es zunächst alle Tabelleneinträge überprüft und falls vorhanden, sollte es nur die neu hinzugefügten Einträge an die csv-Dateien von Dev-Team nur die Einträge, die wir aktualisieren müssen Tabellenspeicher. Das ist es. Das ist ein Ansatz. Haben Sie einen bestmöglichen Ansatz? Bitte helfen Sie mir.

+0

ich viele csv-Dateien, die jeweils CSV-Datei besteht aus Tausend von Tabelleneinträgen.Bitte lassen Sie mich wissen, wie diese CSV-Dateien in Tabellenspeicher über VSTS bereitstellen.Ich finde kein Plugin/Task in VSTS.Kindly mir helfen. –

Antwort

0

Es gibt InsertOrReplace (ITableEntity) Methode in TableBatchOperation Klasse, die den Batch-Betrieb mit ExecuteBatch Methode tun können, versuchen Sie es mit diesem Code:

  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) 
      } 
+0

@MSFT, Ich habe Ihr Skript kopiert und führen Sie das Skript durch den Aufruf der Parameter über Argument-Task in Powershell wie ::: - fileObj @ (@ {"Dateipfad" = "$ (Build.SourcesDirectory) \ DevOps \ Deployment_Scripts \ TestTable1. csv ";" Cols "= 'Label_Value'}, @ {" Dateipfad "=" $ (build.sourcesdirectory) \ DevOps \ Deployment_Scripts \ TestTable2.csv ";" Cols "= 'Label_Value, Lable_cost'}) ..Ich werde logge mich ein onedrive location: https://1drv.ms/t/s!AvMxvVJdKJlVhn2jazDEmfRqV6yn Bitte überprüfe und lass mich wissen, was ich ändern muss, da es den folgenden Fehler anzeigt: Alle Entitäten in einem bestimmten Batch müssen das gleiche haben Partitionsschlüssel –

+0

Vergessen Sie den obigen Fehler: Ich führe nur eine Datei aus, indem ich Argumente wie folgt übergebe: -fileObj @ (@ {"filepath" = "$ (build.sourcesdirectory) \ DevOps \ Deployment_Scripts \ samples.csv"; " Cols "= 'PartitionKey, RowKey, Label_Usage, Label_Value, Usage_Location'}) und die Dateien error und samples.csv, die ich in meinem Laufwerk gespeichert habe. Bitte überprüfen Sie das CSV-Datei und überprüfen Sie bitte Ihr Skript, das Sie vorgeschlagen und Fehlerprotokolldatei. Onedrive-Link: https://1drv.ms/f/s!AvMxvVJdKJlVhwD2ArzyIVL9LBAg –

+0

Ändern Sie den Wert von $ storageAccountName, $ tableName, $ StorageAccountKey? Setzen Sie syetem.debug auf "true" und erstellen und teilen Sie das Protokoll auf dem OneDrive. Auf der anderen Seite verschiebe ich $ table.CloudTable.ExecuteBatch ($ batchOperation) Code aus foreach ($ line in $ csv) Code. –

Verwandte Themen