azure - 如何使用 PowerShell 脚本将数据从外部文件插入 Azure Cosmos DB?
问题描述
我有一个用于在 Azure Cosmos DB 中创建数据库和集合的 PowerShell 脚本,并且我可以使用下面的 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 DB,而不是将 JSON 数据直接放在 PowerShell 脚本中。
那么,谁能建议我如何将数据从外部文件插入 Azure Cosmos DB。
解决方案
将代码片段添加到您需要的位置,它将.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"
}]
结果:
检查门户:
推荐阅读
- spring-boot - 无法加载类 javax.xml.ws.Service
- java - @CacheResult 与 Panache 存储库
- jenkins - 如何将 Jenkins Artifacts 位置更改为另一个驱动器?
- python - 当 Selenium 中的相同元素应该遍历所有元素时,代码会对其进行迭代
- node.js - 将 sql server 转换为 jsom 的数据库语法问题
- javascript - 循环到前 15 分钟 javascript
- visual-studio-code - VS Code - 在两个文件中搜索两个不同的东西
- react-admin - 在操作列和每一行中添加图标 - 反应管理员
- asp.net-core - System.Diagnostics.Trace.TraceError 调用的应用服务日志记录
- android-studio - 立式圆柱android studio