azure之如何使用 PowerShell 在 Azure 存储表中插入行
我很高兴找到 New-AzureStorageTable cmdlet,但我还没有弄清楚如何在表中插入新行。
我在互联网上找到了以下代码,但CloudTable.Execute似乎失败了。
它需要三个参数,如 http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.table.cloudtable.execute(v=azure.10).aspx 中所述。但我不知道如何调用该方法。
任何想法都值得赞赏!
function InsertRow($table, [String]$partitionKey, [String]$rowKey, [int]$intValue)
{
$entity = New-Object "Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity" $partitionKey, $rowKey
$entity.Properties.Add("IntValue", $intValue)
$result = $table.CloudTable.Execute([Microsoft.WindowsAzure.Storage.Table.TableOperation]::Insert($entity))
}
$StorageAccountName = "MyAccountName"
$StorageAccountKey = "MyAccountKey"
$context = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
$table = New-AzureStorageTable test -Context $context
for ($p = 1; $p -le 10; $p++)
{
for ($r = 1; $r -le 10; $r++)
{
InsertRow $table "P$p" "R$r" $r
}
}
更新
按照下面的建议,您必须首先使用 Get-AzureStorageTable 检查该表是否已存在。
$tablename = "test"
$table = Get-AzureStorageTable $tablename -Context $context -ErrorAction Ignore
if ($table -eq $null)
{
New-AzureStorageTable $tablename -Context $context
}
请您参考如下方法:
这是仅使用存储客户端库 ( Microsoft.WindowsAzure.Storage.dll
) 的替代实现。
#Insert row ... here $table is an object of type CloudTable
function InsertRow($table, [String]$partitionKey, [String]$rowKey, [int]$intValue)
{
$entity = New-Object "Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity" $partitionKey, $rowKey
$entity.Properties.Add("IntValue", $intValue)
$result = $table.Execute([Microsoft.WindowsAzure.Storage.Table.TableOperation]::Insert($entity))
}
$StorageAccountName = "accountname"
$StorageAccountKey = "accountkey"
$tableName = "MyTable3"
#Create instance of storage credentials object using account name/key
$accountCredentials = New-Object "Microsoft.WindowsAzure.Storage.Auth.StorageCredentials" $StorageAccountName, $StorageAccountKey
#Create instance of CloudStorageAccount object
$storageAccount = New-Object "Microsoft.WindowsAzure.Storage.CloudStorageAccount" $accountCredentials, $true
#Create table client
$tableClient = $storageAccount.CreateCloudTableClient()
#Get a reference to CloudTable object
$table = $tableClient.GetTableReference($tableName)
#Try to create table if it does not exist
$table.CreateIfNotExists()
for ($p = 1; $p -le 10; $p++)
{
for ($r = 1; $r -le 10; $r++)
{
InsertRow $table "P$p" "R$r" $r
}
}
更新
我刚刚尝试了上面的代码,它工作得很好 if the table does not exist in storage
。如果我尝试为存储中已存在的表运行此脚本,我能够重现您遇到的错误。我认为这就是正在发生的事情:当您调用New-AzureStorageTable
时创建一个表,如果该表已经存在,那么它会抛出一个错误并返回 null
值为 $table
变量,然后当您尝试执行 InsertRow
时使用此功能 null
有值(value)$table
变量,您会在 Execute
上收到错误功能。理想的New-AzureStorageTable
如果表已经存在,则不应出错。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。