Push Data To Azure CosmosDb From Using PowerShell

In this article, we are going to demonstrate how we can use PowerShell scripts to save data in Azure CosmosDb collection from a file leveraging CosmosDb PowerShell package

Save data in Azure CosmosDb collection

CosmosDb is a fully managed, nosql, non relational database which allows us to store data durably with several ACID configurations. Microsoft guarantees speed at any scale

Let’s get started and write the code.

#region param
param (
	[Parameter(Mandatory = $false)]
	[string]$resourceGroup = "",

	[Parameter(Mandatory = $false)]
	[string]$database = "",

	[Parameter(Mandatory = $false)]
	[string]$cosmosAccount = "",

	[Parameter(Mandatory = $false)]
	[string]$filePath = "../file.json"
#endregion param

Function UpdateCosmosDb
	$User = "Azure-userId"
	$PWord = ConvertTo-SecureString -String "Password" -AsPlainText -Force
	$tenant = "Azure Tenant Id"
	$subscription = "cAzure Subscription Id"
	$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User,$PWord
	Connect-AzAccount -Credential $Credential -Tenant $tenant -Subscription $subscription #Login into your azure account

	$module = Get-InstalledModule -Name 'CosmosDB'
	if($module -ne $null)
		write-host "module CosmosDB avaiable"
		write-host "module CosmosDB not avaiable download in progress"
		Install-Module -Name CosmosDB -AllowClobber -force
	$items = Get-Content -path $filePath -Encoding UTF8 -Raw | ConvertFrom-Json
	$cosmosDbContext = New-CosmosDbContext -Account $cosmosAccount -Database $database -ResourceGroup $resourceGroup
	foreach($item in $items)
		$id = $item.id
		$item | Add-Member -NotePropertyName id -NotePropertyValue $id #creates new property in josn
		$document = $item | ConvertTo-Json #converts the object into json
		$query = "SELECT c.id FROM c WHERE c.id = '$id'"
		write-host $query
		$existingDocument = Get-CosmosDbDocument -Context $cosmosDbContext -CollectionId 'ContainerId' -Query $query
		if($existingDocument -ne $null)
			write-host "Remove $document"
			Remove-CosmosDbDocument -Context $cosmosDbContext -CollectionId 'ContainerId' -PartitionKey "$id" -Id "$id"
		write-host "New $document"
		New-CosmosDbDocument -Context $cosmosDbContext -CollectionId 'ContainerId' -DocumentBody $document -PartitionKey "$id"

If you are executing the above PowerShell in Azure pipeline with let’s say contributor role then you don’t need to perform Line No. 20 to 26

Keep coding


Leave a Reply

Your email address will not be published. Required fields are marked *

Verified by MonsterInsights