我们如何将 azure 存储帐户 table 复制到另一个存储帐户?
how do we copy an azure storage account table to another storage account?
我正在尝试将我的存储 table 克隆到不同的存储帐户中。使用 powershell 执行此操作的最佳方法是什么?
我尝试了 this 解决方案;然而,在这一点上我得到了这个例外:
Copy-AzureStorageTable : The term 'Copy-AzureStorageTable' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the
name, or if a path was included, verify that the path is correct and try again.
我们如何将 table 复制到另一个存储帐户?
很遗憾,AzCopy v10 不支持 Azure Table 存储。要export/import 数据from/to Azure Table 存储,您需要使用AzCopy v7.3 代替。
注意不支持直接Table复制到Table,需要导出源table到本地首先是磁盘或 Blob 存储,然后将其导入另一个目的地 table.
我们已经编写了下面的 PowerShell 脚本,它将存储帐户下的所有 tables 下载到您的本地,并将上传到工作正常的目标存储帐户。
这是 PowerShell 脚本:
Connect-azaccount
$strgName='<storageAccountName>'
$stcontext=New-AzStorageContext -StorageAccountName $strgName -StorageAccountKey <StorageAccountKey>
$tablelist=Get-AzStorageTable -Context $stcontext | Select-Object -Property Uri,Name
foreach($table in $tablelist){
$Sourceuri=$table.Uri
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy"
.\AzCopy /Source:$Sourceuri /Dest:C:\Users\Downloads\azcopy1 /SourceKey:<StorageAccountKey>
}
$localist=Get-ChildItem -Path C:\users\Downloads\azcopy1\ -Exclude *.json
foreach( $item in $localist){
$tbname=$item.Name.Replace('<storageaccountName>_','').Replace('.manifest','').Replace('_','').Replace('.','')
$manifest=$item.Name.Replace('C:\users\Downloads\azcopy1\','')
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy" `
.\AzCopy /Source:C:\users\Downloads\azcopy\ /Dest:https://<DestinationStorageAccount>.table.core.windows.net/$tbname/ /DestKey:<DestinationAccountKey> /Manifest:$manifest /EntityOperation:InsertOrReplace
}
这里是供参考的输出:
我正在尝试将我的存储 table 克隆到不同的存储帐户中。使用 powershell 执行此操作的最佳方法是什么?
我尝试了 this 解决方案;然而,在这一点上我得到了这个例外:
Copy-AzureStorageTable : The term 'Copy-AzureStorageTable' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the
name, or if a path was included, verify that the path is correct and try again.
我们如何将 table 复制到另一个存储帐户?
很遗憾,AzCopy v10 不支持 Azure Table 存储。要export/import 数据from/to Azure Table 存储,您需要使用AzCopy v7.3 代替。
注意不支持直接Table复制到Table,需要导出源table到本地首先是磁盘或 Blob 存储,然后将其导入另一个目的地 table.
我们已经编写了下面的 PowerShell 脚本,它将存储帐户下的所有 tables 下载到您的本地,并将上传到工作正常的目标存储帐户。
这是 PowerShell 脚本:
Connect-azaccount
$strgName='<storageAccountName>'
$stcontext=New-AzStorageContext -StorageAccountName $strgName -StorageAccountKey <StorageAccountKey>
$tablelist=Get-AzStorageTable -Context $stcontext | Select-Object -Property Uri,Name
foreach($table in $tablelist){
$Sourceuri=$table.Uri
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy"
.\AzCopy /Source:$Sourceuri /Dest:C:\Users\Downloads\azcopy1 /SourceKey:<StorageAccountKey>
}
$localist=Get-ChildItem -Path C:\users\Downloads\azcopy1\ -Exclude *.json
foreach( $item in $localist){
$tbname=$item.Name.Replace('<storageaccountName>_','').Replace('.manifest','').Replace('_','').Replace('.','')
$manifest=$item.Name.Replace('C:\users\Downloads\azcopy1\','')
cd "C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy" `
.\AzCopy /Source:C:\users\Downloads\azcopy\ /Dest:https://<DestinationStorageAccount>.table.core.windows.net/$tbname/ /DestKey:<DestinationAccountKey> /Manifest:$manifest /EntityOperation:InsertOrReplace
}
这里是供参考的输出: