当前位置: 首页 > 知识库问答 >
问题:

如何使用 PowerShell 脚本将数据从外部文件插入 Azure Cosmos DB?

申自明
2023-03-14

我有一个用于在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。

共有1个答案

陈德泽
2023-03-14

代码片段添加到您需要的位置,它将在集合中创建. 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"
}]

结果:

在门户网站中签入:

 类似资料:
  • 我写了一个函数,允许我从剪贴板中获取四列数据,拆分它,添加一列额外的列,重新组合它,并将其导出为文本文件。 我有两个问题:- 是否可以创建一个文件,其中包含我使用此函数创建的表,以便将该表粘贴到某些文本的中间? 邪恶的笑(Evil Grin的缩写) 其次,我试图修改函数,使其将一个文件名作为变量;即< code>xyztoinp 等等……但这并没有产生带有新文件名的输出;有人知道这是怎么做到的吗?

  • 我需要下载一个文件,每天从网站上的日期将过去。我尝试使用以下代码- 但这是一个错误- Invoke-WebRequest:基础连接已关闭:发送时发生意外错误。在行:3字符:1调用-网络请求-Uri$url-OutFile$输出 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 分类信息:无效操作:(System.网。[Invoke-WebRequest],

  • 问题内容: 如何从“脚本” 执行PowerShell ps1脚本? 我知道如何在package.json“ scripts”中设置基本脚本。例如,使用以下配置,我可以执行该命令,该命令将向控制台输出“这仅仅是测试”: 但是,我有一个更高级的场景,我想执行一个PowerShell脚本。像这样: 我可以通过scripts对象执行这样的ps1脚本吗?是否需要任何特殊的设置/配置?还有其他限制吗? 问题答

  • 问题内容: 我有一个程序和一个脚本,希望将其合并到我的Web应用程序中。 我想使用它们来解析上传到我的网站的文件;处理过程可能需要几秒钟,因此我也避免阻止该应用程序。 我如何才能只接受文件,然后仅在控制器的子过程中运行程序和脚本? 问题答案: 参见child_process。这是一个使用的示例,它允许您在输出数据时写入stdin并从stderr / stdout中读取。如果您不需要写stdin并且

  • 问题内容: 我正在努力将数据从文件导入。 我可以使用在命令行中执行相同的操作。 我进行了很多尝试,但无法使用Java从Json文件导入。 sample.json 谢谢你的时间 〜加内什〜 问题答案: 假设您可以分别读取JSON字符串。例如,您阅读了第一个JSON文本 并将其分配给变量(字符串json1),下一步是解析它, 将所有 dbo 放入列表, 然后将它们保存到数据库中: 编辑: 在最新的Mo