Как ограничить число объектов, копируемых из хранилища таблиц Azure AzCopy? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь скопировать образец объектов хранения таблицы Azure в мой локальный файл.Источник довольно большой с миллионами записей.Как я могу ограничить передачу данных и принимать только первые 1К сущностей?

Простая команда скопирует их все (AzCopy 7.3.1):

AzCopy.exe / Source: ... table.core.windows.net / profile /SourceKey:..somekey / Dest: C: \ Temp / Манифест: qa-профиль / SplitSize: 128

1 Ответ

1 голос
/ 18 апреля 2019

По моему опыту, я думаю, что вы не можете скопировать предельное количество сущностей из хранилища таблиц Azure просто с помощью AzCopy.

Однако вы можете попробовать использовать PowerShell с модулем Azure для этого. Вот мои шаги и пример кода, к которому вы можете обратиться.

  1. Чтобы запустить PowerShell от имени администратора для установки модуля Azure с помощью команды Install-Module -Name Az -AllowClobber -Scope CurrentUser, к которой можно обратиться к официальному документу Install the Azure PowerShell module, чтобы узнать подробности.

  2. Следуйте разделу Sign in to Azure официального руководства Perform Azure Table storage operations with Azure PowerShell, чтобы войти в Azure с помощью своей учетной записи в PowerShell.

  3. Вот мой пример кода, который вы можете попробовать запустить на локальном компьютере после выполнения шага 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)\/"
}

Надеюсь, это поможет.

...