Как вставить данные в базу данных Azure Cosmos из внешнего файла с помощью скрипта PowerShell? - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть сценарий PowerShell для создания базы данных и коллекции в базе данных Azure Cosmos, и я могу вставить несколько фиктивных записей в коллекцию с помощью приведенного ниже сценария PowerShell.

    #region Parameters

$clientId= "< Replace with your clientId >"
$clientSecret= "< Replae with you clientsecret >"
$subscriptionName= "< Replace with your subscription name>"
$tenantId= "< Replace with your tenant Id>"
$resourceGroupName= "Demo"
$connectionString='< Replace wtih Cosmos DB Connection String >'
$cosmosDBAccounts= @('demo-account-01')
#$accountName='demo-account-01'
$databaseName='demo-db-01'
$collectionName='demo-collection-01'
$partitionkey= 'demo'

#endregion

#region Login into Azure using Interactive Mode or Service Principal details

# sign in
Write-Host "Logging in...";

#Connect-AzAccount 
$securePassword = $clientSecret | ConvertTo-SecureString -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $clientId, $securePassword
Connect-AzAccount -Credential $cred -ServicePrincipal -TenantId $tenantId

#Set the current azure subscription
Select-AzSubscription  -subscription $subscriptionName

#endregion

#region Create Collection and insert some data into it

foreach($cosmosDBAccount in $cosmosDBAccounts){

    $cosmosDbContext = New-CosmosDbContext -Account $cosmosDbAccount -Database $databaseName -ResourceGroup $resourceGroupName    
    New-CosmosDbDatabase -Context $cosmosDbContext -Id $databaseName
    New-CosmosDbCollection -Context $cosmosDbContext -Id $collectionName -PartitionKey $partitionkey -OfferThroughput 2500 -Database $databaseName

0..9 | Foreach-Object {

$document = @"
{
         "id": "$([Guid]::NewGuid().ToString())",
         "name": "pradeep",         
         "demo": "XYZ"  
}
"@

New-CosmosDbDocument -Context $cosmosDbContext -CollectionId $collectionName -DocumentBody $document -PartitionKey "XYZ"

}
}

#endregion

Но я хочу вставитьзаписи в базу данных Azure Cosmos из внешнего файла вместо помещения данных JSON непосредственно в сценарий PowerShell.

Итак, кто-нибудь может подсказать, как вставить данные в базу данных Azure Cosmos из внешнего файла.

1 Ответ

0 голосов
/ 01 февраля 2019

Добавьте фрагмент кода туда, где вам нужно, он создаст документы из файла .json в коллекции.

$json = Get-Content 'C:\Users\joyw\Desktop\cosmos.json' | Out-String | ConvertFrom-Json
$cosmosDbContext = New-CosmosDbContext -Account $cosmosDbAccount -Database $databaseName -ResourceGroup $resourceGroupName

foreach($item in $json){
    $document = $item | ConvertTo-Json | Out-String
    New-CosmosDbDocument -Context $cosmosDbContext -CollectionId $collectionName -DocumentBody $document -PartitionKey "XYZ"

}

Мой .json файл:

[{
    "id": "1",
    "name": "pradeep",
    "demo": "XYZ"
}, {
    "id": "2",
    "name": "pradeep12",
    "demo": "XYZ"
}, {
    "id": "3",
    "name": "pradeep123",
    "demo": "XYZ"
}, {
    "id": "4",
    "name": "pradeep1234",
    "demo": "XYZ"
}]

Результат :

enter image description here

Регистрация на портале :

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...