如何限制 AzCopy 从 azure table 存储复制的实体数量?
How to limit number of entities copied from azure table storage by AzCopy?
我正在尝试将 azure table 存储实体示例复制到我的本地文件。源非常大,有数百万条记录。我如何限制数据传输并只获取前 1K 个实体?
直接的命令将复制所有这些 (AzCopy 7.3.1):
AzCopy.exe /Source: ...table.core.windows.net/profile /SourceKey:..somekey
/Dest:C:\Temp /Manifest:qa-profile /SplitSize:128
根据我的经验,我认为您无法仅通过 AzCopy 从 Azure Table 存储中复制限制数量的实体。
不过,您可以尝试使用 PowerShell 和 Azure 模块来完成。这是我的步骤和示例代码,您可以参考。
以管理员身份运行 PowerShell通过命令Install-Module -Name Az -AllowClobber -Scope CurrentUser
安装Azure Module,具体可参考官方文档Install the Azure PowerShell module
。
按照官方教程 Perform Azure Table storage operations with Azure PowerShell
的 Sign in to Azure
部分,使用您在 PowerShell 上的帐户登录 Azure。
这是我的示例代码,您可以在完成第 2 步后尝试 运行 在您的本地计算机上。
$storageAccountName = "<your storage account name>"
$resourceGroup = "<the resource group name of your storage>"
$location = "<the location of your storage>"
$storageAccount = Get-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroup
$ctx = $storageAccount.Context
$tableName = "<your table name>"
$cloudTable = (Get-AzStorageTable –Name $tableName –Context $ctx).CloudTable
$i = 0 ; $n = 1000 ; Get-AzTableRow -table $cloudTable | ForEach-Object {ConvertTo-Json $_; $i++; If($i -eq $n) {break}} > results-1000.json
结果内容如下
{
"ProductName": "AAAAAAA",
"PartitionKey": "A",
"RowKey": "1",
"TableTimestamp": "\/Date(1542619135228)\/"
}
{
"ProductName": "BBBBBBB",
"PartitionKey": "B",
"RowKey": "2",
"TableTimestamp": "\/Date(1542619145997)\/"
}
希望对您有所帮助。
我正在尝试将 azure table 存储实体示例复制到我的本地文件。源非常大,有数百万条记录。我如何限制数据传输并只获取前 1K 个实体?
直接的命令将复制所有这些 (AzCopy 7.3.1):
AzCopy.exe /Source: ...table.core.windows.net/profile /SourceKey:..somekey /Dest:C:\Temp /Manifest:qa-profile /SplitSize:128
根据我的经验,我认为您无法仅通过 AzCopy 从 Azure Table 存储中复制限制数量的实体。
不过,您可以尝试使用 PowerShell 和 Azure 模块来完成。这是我的步骤和示例代码,您可以参考。
以管理员身份运行 PowerShell通过命令
Install-Module -Name Az -AllowClobber -Scope CurrentUser
安装Azure Module,具体可参考官方文档Install the Azure PowerShell module
。按照官方教程
Perform Azure Table storage operations with Azure PowerShell
的Sign in to Azure
部分,使用您在 PowerShell 上的帐户登录 Azure。这是我的示例代码,您可以在完成第 2 步后尝试 运行 在您的本地计算机上。
$storageAccountName = "<your storage account name>" $resourceGroup = "<the resource group name of your storage>" $location = "<the location of your storage>" $storageAccount = Get-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroup $ctx = $storageAccount.Context $tableName = "<your table name>" $cloudTable = (Get-AzStorageTable –Name $tableName –Context $ctx).CloudTable $i = 0 ; $n = 1000 ; Get-AzTableRow -table $cloudTable | ForEach-Object {ConvertTo-Json $_; $i++; If($i -eq $n) {break}} > results-1000.json
结果内容如下
{
"ProductName": "AAAAAAA",
"PartitionKey": "A",
"RowKey": "1",
"TableTimestamp": "\/Date(1542619135228)\/"
}
{
"ProductName": "BBBBBBB",
"PartitionKey": "B",
"RowKey": "2",
"TableTimestamp": "\/Date(1542619145997)\/"
}
希望对您有所帮助。