Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 将表部署到表存储中的最佳方法_Powershell_Azure_Azure Table Storage - Fatal编程技术网

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

Powershell 将表部署到表存储中的最佳方法,powershell,azure,azure-table-storage,Powershell,Azure,Azure Table Storage,请告诉我,什么是进行表存储部署的最佳方法,因为我的开发团队要求他们有很多表,每个表都有数千个条目。因此,他们要求我咨询任何microsoft团队或博客人员,以检查执行表存储部署的最佳方法。您知道我们可以如何做吗?因为脚本每次都会消耗和插入数千个条目 我们是否有任何增量方法,比如它会首先检查所有的表条目,如果存在的话,那么它应该只将新添加的条目附加到csv文件中,由开发团队将这些条目添加到csv文件中,我们只需要更新到表存储中。就是这样。这是一种方法。您有任何最好的方法吗?请提供帮助我 类中有In

请告诉我,什么是进行表存储部署的最佳方法,因为我的开发团队要求他们有很多表,每个表都有数千个条目。因此,他们要求我咨询任何microsoft团队或博客人员,以检查执行表存储部署的最佳方法。您知道我们可以如何做吗?因为脚本每次都会消耗和插入数千个条目


我们是否有任何增量方法,比如它会首先检查所有的表条目,如果存在的话,那么它应该只将新添加的条目附加到csv文件中,由开发团队将这些条目添加到csv文件中,我们只需要更新到表存储中。就是这样。这是一种方法。您有任何最好的方法吗?请提供帮助我

类中有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)
            }

我有许多csv文件,每个csv文件由数千个表项组成。请告诉我如何通过VSTS将这些csv文件部署到表存储中。我在VSTS中找不到任何插件/任务。请帮助我。@MSFT,我已复制了您的脚本,并通过调用powershell中的参数任务来运行脚本,如:-fileObj@(@{“文件路径”=“$(build.sourcesdirectory)\DevOps\Deployment\u Scripts\TestTable1.csv”;“Cols”='Label\u Value'},@{“文件路径”=“$(build.sourcesdirectory)\DevOps\Deployment\u Scripts\TestTable2.csv”;“Cols”='Label\u Value,Lable\u cost'})…我将把日志保存在onedrive位置:请检查并让我知道我需要做什么更改,因为它抛出了一个错误,即:给定批处理中的所有实体都必须具有相同的分区键忘记上述错误:通过传递如下参数,我只运行一个文件:-fileObj@(@{“filepath”=“$(build.sourcesdirectory)\DevOps\Deployment\u Scripts\sampletable.csv“;“Cols”='PartitionKey,RowKey,Label\u用法,Label\u值,用法\u位置')以及我保存在一个驱动器位置的错误和sampletable.csv文件。请检查该csv文件,并检查您建议的脚本和错误日志文件。Onedrive链接:是否更改$storageAccountName、$tableName、$StorageAccountKey的值?将syetem.debug设置为true,然后在Onedrive上排队生成和共享日志.另一方面,我将$table.CloudTable.ExecuteBatch($batchOperation)代码移出foreach($csv中的行)代码。请查看更新前和更新后运行的代码附带的system.debug set=true日志。根据以上更新的代码,我已运行生成,但仍存在抛出错误,我已将该日志附加到一个驱动器中。请帮助我..尝试检查对象是否为null,检查更新的代码。