我们如何将 azure 存储帐户表复制到另一个存储帐户?

Posted

技术标签:

【中文标题】我们如何将 azure 存储帐户表复制到另一个存储帐户?【英文标题】:how do we copy an azure storage account table to another storage account? 【发布时间】:2021-12-23 07:29:21 【问题描述】:

我正在尝试将我的存储表克隆到不同的存储帐户中。使用 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.

我们如何将表复制到另一个存储帐户?

【问题讨论】:

【参考方案1】:

很遗憾,AzCopy v10 不支持 Azure 表存储。若要从/向 Azure 表存储导出/导入数据,您需要改用 AzCopy v7.3。

注意它不支持直接Table to Table复制,所以需要先将源表导出到本地磁盘或Blob Storage,然后再导入到另一个目标表。 p>

我们编写了以下 PowerShell 脚本,它将存储帐户下的所有表下载到您的本地,并将上传到运行正常的目标存储帐户。

这是 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


这是输出供参考:

【讨论】:

以上是关于我们如何将 azure 存储帐户表复制到另一个存储帐户?的主要内容,如果未能解决你的问题,请参考以下文章

将存储数据从一个 Azure 帐户复制到另一个

Azure Blob 存储:防止 Blob 复制到另一个存储帐户的最佳方法?

使用 @azure/storage-blob 将 blob 从一个存储帐户复制到另一个

停用 Azure 文件同步

将 Parquet 文件从 Azure 数据湖存储帐户复制到 Synapse 数据仓库表失败

使用 powershell 在 Azure 中不同订阅的存储容器之间复制 blob