Dela via


Utföra Azure Table Storage-åtgärder med Azure PowerShell

Tips

Innehållet i den här artikeln gäller för Azure Table Storage. Nu finns det dock ett Premium-erbjudande för tabelllagring, Azure Cosmos DB for Table som erbjuder dataflödesoptimerade tabeller, global distribution och automatiska sekundära index. Om du vill veta mer och prova premiumupplevelsen kan du titta på Azure Cosmos DB for Table. Den här artikelns programmeringsspråk stöds ännu inte i premiumerbjudandet, men kommer att läggas till i framtiden.

Azure Table Storage är ett NoSQL-datalager som du kan använda för att lagra och köra frågor mot stora uppsättningar strukturerade, icke-relationella data. Huvudkomponenterna i tjänsten är tabeller, entiteter och egenskaper. En tabell är en samling entiteter. En entitet är en uppsättning egenskaper. Varje entitet kan ha upp till 252 egenskaper, som alla är namn/värde-par. Den här artikeln förutsätter att du redan är bekant med begreppen i Azure Table Storage Service. Detaljerad information finns i Förstå Table Service Data Model och Kom igång med Azure Table Storage med hjälp av .NET.

Den här artikeln beskriver vanliga Azure Table Storage-åtgärder. Du lär dig att:

  • Skapa en tabell
  • Hämta en tabell
  • Lägga till tabellentiteter
  • Utför en förfrågan på en tabell
  • Ta bort tabellentiteter
  • Ta bort en tabell

Den här artikeln beskriver hur du skapar ett nytt lagringskonto i en ny resursgrupp så att du enkelt kan ta bort det när du är klar. Du kan också använda ett befintligt lagringskonto.

Exemplen kräver Az PowerShell-moduler Az.Storage (1.1.0 or greater) och Az.Resources (1.2.0 or greater). I ett PowerShell-fönster kör du Get-Module -ListAvailable Az* för att hitta versionen. Om inget visas eller om du behöver uppgradera kan du läsa Installera Azure PowerShell-modulen.

Viktigt!

Om du använder den här Azure-funktionen från PowerShell måste du ha modulen Az installerad. Den aktuella versionen av AzTable är inte kompatibel med den äldre AzureRM-modulen. Följ de senaste installationsanvisningarna för att installera Az-modulen om det behövs.

Av kompatibilitetsskäl för modulnamn publiceras även den här modulen under föregående namn AzureRmStorageTables i PowerShell-galleriet. Det här dokumentet refererar endast till det nya namnet.

När Azure PowerShell har installerats eller uppdaterats måste du installera modulen AzTable, som har kommandon för att hantera entiteterna. Om du vill installera den här modulen kör du PowerShell som administratör och använder kommandot Install-Module .

Install-Module AzTable

Auktorisera tabelldataåtgärder

AzTable PowerShell-modulen stöder auktorisering med kontoåtkomstnyckeln via auktorisering av delad nyckel. Exemplen i den här artikeln visar hur du auktoriserar tabelldataåtgärder via delad nyckel.

Azure Table Storage stöder auktorisering med Microsoft Entra-ID. AzTable PowerShell-modulen stöder dock inte inbyggt auktorisering med Microsoft Entra-ID. Om du använder Microsoft Entra-ID med AzTable-modulen måste du anropa metoder i .NET-klientbiblioteket från PowerShell.

Logga in på Azure

Kom igång genom att logga in på din Azure-prenumeration med Add-AzAccount kommandot och följa anvisningarna på skärmen.

Add-AzAccount

Hämta lista över platser

Om du inte vet vilken plats du vill använda kan du visa en lista med tillgängliga platser. Hitta den du vill använda i listan som visas. I de här exemplen används eastus. Lagra det här värdet på variabelplatsen för framtida användning.

Get-AzLocation | select Location
$location = "eastus"

Skapa resursgrupp

Skapa en resursgrupp med kommandot New-AzResourceGroup.

En Azure-resursgrupp är en logisk container där Azure-resurser distribueras och hanteras. Lagra resursgruppens namn i en variabel för framtida användning. I det här exemplet skapas en resursgrupp med namnet pshtablesrg i regionen eastus .

$resourceGroup = "pshtablesrg"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location

Skapa lagringskonto

Skapa ett standardlagringskonto för generell användning med lokalt redundant lagring (LRS) med New-AzStorageAccount. Se till att ange ett unikt lagringskontonamn. Hämta sedan kontexten som representerar lagringskontot. När du agerar på ett lagringskonto kan du referera till kontexten i stället för att upprepade gånger ange dina autentiseringsuppgifter.

$storageAccountName = "pshtablestorage"
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
  -Name $storageAccountName `
  -Location $location `
  -SkuName Standard_LRS `
  -Kind Storage

$ctx = $storageAccount.Context

Skapa en ny tabell

Om du vill skapa en tabell använder du cmdleten New-AzStorageTable . I det här exemplet är tabellen kallad pshtesttable.

$tableName = "pshtesttable"
New-AzStorageTable -Name $tableName -Context $ctx

Hämta en lista över tabeller i lagringskontot

Hämta en lista över tabeller i lagringskontot med hjälp av Get-AzStorageTable.

Get-AzStorageTable -Context $ctx | select Name

Hämta en referens till en specifik tabell

Om du vill utföra åtgärder i en tabell behöver du en referens till den specifika tabellen. Hämta en referens genom Get-AzStorageTable.

$storageTable = Get-AzStorageTable -Name $tableName -Context $ctx

Referera till egenskapen CloudTable för en specifik tabell

Viktigt!

Det är obligatoriskt att använda egenskapen CloudTable när du arbetar med tabelldata via AzTable PowerShell-modulen. Anropa kommandot Get-AzStorageTable för att hämta referensen till det här objektet.

Om du vill utföra åtgärder i en tabell med AzTable returnerar du en referens till egenskapen CloudTable för en specifik tabell. Egenskapen CloudTable exponerar de .NET-metoder som är tillgängliga för att hantera tabelldata från PowerShell.

$cloudTable = $storageTable.CloudTable

Hantera tabellentiteter

Nu när du har en tabell ska vi titta på hur du hanterar entiteter eller rader i tabellen.

Entiteter kan ha upp till 255 egenskaper, inklusive tre systemegenskaper: PartitionKey, RowKey och Timestamp. Du ansvarar för att infoga och uppdatera värdena för PartitionKey och RowKey. Servern hanterar värdet för Tidsstämpel, som inte kan ändras. Tillsammans identifierar PartitionKey och RowKey varje entitet i en tabell unikt.

  • PartitionKey: Avgör partitionen som entiteten lagras i.
  • RowKey: Identifierar entiteten i partitionen unikt.

Du kan definiera upp till 252 anpassade egenskaper för en entitet.

Lägga till tabellentiteter

Lägg till entiteter i en tabell med Hjälp av Add-AzTableRow. I de här exemplen används partitionsnycklar med värden partition1 och partition2, och radnycklar som är lika med tillståndsförkortningar. Egenskaperna i varje entitet är username och userid.

$partitionKey1 = "partition1"
$partitionKey2 = "partition2"

# add four rows 
Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey1 `
    -rowKey ("CA") -property @{"username"="Chris";"userid"=1}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey2 `
    -rowKey ("NM") -property @{"username"="Jessie";"userid"=2}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey1 `
    -rowKey ("WA") -property @{"username"="Christine";"userid"=3}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey2 `
    -rowKey ("TX") -property @{"username"="Steven";"userid"=4}

Fråga tabellentiteterna

Du kan fråga entiteterna i en tabell genom att använda kommandot Get-AzTableRow.

Kommentar

Cmdletarna Get-AzureStorageTableRowAll, Get-AzureStorageTableRowByPartitionKey, Get-AzureStorageTableRowByColumnName och Get-AzureStorageTableRowByCustomFilter är inaktuella och tas bort i en framtida versionsuppdatering.

Hämta alla entiteter

Get-AzTableRow -table $cloudTable | ft

Det här kommandot ger resultat som liknar följande tabell:

användar-ID användarnamn skifte rowkey
1 Chris partition1 CA
3 Christine partition1 WA
2 Jessie partition2 NM
4 Steven partition2 TX

Hämta antalet entiteter i tabellen

$totalEntities=(Get-AzTableRow -table $cloudTable | measure).Count
Echo $totalEntities

Det här kommandot resulterar i det numeriska antalet entiteter som liknar nedan:

4

Hämta entiteter för en specifik partitionsnyckel

Get-AzTableRow -table $cloudTable -partitionKey $partitionKey1 | ft

Resultatet ser ut ungefär som i följande tabell:

användar-id användarnamn skifte rowkey
1 Chris partition1 CA
3 Christine partition1 WA

Hämta entiteter för ett specifikt värde i en specifik kolumn

Get-AzTableRow -table $cloudTable `
    -columnName "username" `
    -value "Chris" `
    -operator Equal

Den här sökfrågan hämtar en post.

fält värde
användar-ID 1
användarnamn Chris
PartitionKey partition1
RowKey CA

Hämta entiteter med ett anpassat filter

Get-AzTableRow `
    -table $cloudTable `
    -customFilter "(userid eq 1)"

Den här frågan hämtar en post.

fält värde
användar-ID 1
användarnamn Chris
Partitionsnyckel partition1
RowKey CA

Uppdatera entiteter

Det finns tre steg för att uppdatera entiteter. Hämta först entiteten som ska ändras. För det andra, genomför ändringen. För det tredje genomför du ändringen med Update-AzTableRow.

Uppdatera entiteten med användarnamnet = 'Jessie' för att ha användarnamnet = 'Jessie2'. Det här exemplet visar också ett annat sätt att skapa ett anpassat filter med hjälp av .NET-typer.

# Create a filter and get the entity to be updated.
[string]$filter = `
    [Microsoft.Azure.Cosmos.Table.TableQuery]::GenerateFilterCondition("username",`
    [Microsoft.Azure.Cosmos.Table.QueryComparisons]::Equal,"Jessie")
$user = Get-AzTableRow `
    -table $cloudTable `
    -customFilter $filter

# Change the entity.
$user.username = "Jessie2"

# To commit the change, pipe the updated record into the update cmdlet.
$user | Update-AzTableRow -table $cloudTable

# To see the new record, query the table.
Get-AzTableRow -table $cloudTable `
    -customFilter "(username eq 'Jessie2')"

Resultaten visar Jessie2-posten.

fält värde
användar-ID 2
användarnamn Jessie2
Partitionsnyckel partition 2
RowKey NM

Ta bort tabellentiteter

Du kan ta bort en entitet eller alla entiteter i tabellen.

Ta bort en entitet

Om du vill ta bort en enskild entitet hämtar du en referens till den entiteten och skicka den till Remove-AzTableRow.

# Set filter.
[string]$filter = `
  [Microsoft.Azure.Cosmos.Table.TableQuery]::GenerateFilterCondition("username",`
  [Microsoft.Azure.Cosmos.Table.QueryComparisons]::Equal,"Jessie2")

# Retrieve entity to be deleted, then pipe it into the remove cmdlet.
$userToDelete = Get-AzTableRow `
    -table $cloudTable `
    -customFilter $filter
$userToDelete | Remove-AzTableRow -table $cloudTable

# Retrieve entities from table and see that Jessie2 has been deleted.
Get-AzTableRow -table $cloudTable | ft

Ta bort alla entiteter i tabellen

Om du vill ta bort alla entiteter i tabellen hämtar du dem och dirigerar resultatet till cmdleten remove.

# Get all rows and pipe the result into the remove cmdlet.
Get-AzTableRow `
    -table $cloudTable | Remove-AzTableRow -table $cloudTable 

# List entities in the table (there won't be any).
Get-AzTableRow -table $cloudTable | ft

Ta bort en tabell

Om du vill ta bort en tabell använder du Remove-AzStorageTable. Den här cmdleten tar bort tabellen, inklusive alla dess data.

Remove-AzStorageTable -Name $tableName -Context $ctx

# Retrieve the list of tables to verify the table has been removed.
Get-AzStorageTable -Context $Ctx | select Name

Rensa resurser

Om du skapade en ny resursgrupp och ett nytt lagringskonto i början av den här instruktioner kan du ta bort alla tillgångar som du har skapat i den här övningen genom att ta bort resursgruppen. Det här kommandot tar bort alla resurser som ingår i gruppen samt själva resursgruppen.

Remove-AzResourceGroup -Name $resourceGroup

Nästa steg

I den här artikeln har du lärt dig om vanliga Azure Table Storage-åtgärder med PowerShell, inklusive hur du:

  • Skapa en tabell
  • Hämta en tabell
  • Lägga till tabellentiteter
  • Sök i en tabell
  • Ta bort tabellentiteter
  • Ta bort en tabell

Mer information finns i följande artiklar