【问题标题】:Seed Data to Cosmos DB in Azure Devops在 Azure Devops 中将数据播种到 Cosmos DB
【发布时间】:2020-12-04 07:19:33
【问题描述】:

我有 ARM 模板通过管道创建 Cosmos DB、数据库和集合。由于有多个应用程序使用该数据库,我想播种初始数据进行测试,我在 devops 中寻找 Cosmos DB 导入任务并找到了这个https://marketplace.visualstudio.com/items?itemName=winvision-bv.winvisionbv-cosmosdb-tasks,但现在不支持 mongo API。它无法从我在存储帐户中的 json 文件中导入数据。

我的问题是,有没有其他方法可以通过像 powershell/api 这样的 devops 将数据从 json 文件添加到 cosmos DB?

【问题讨论】:

    标签: azure-devops azure-cosmosdb azure-cosmosdb-mongoapi


    【解决方案1】:

    我的问题是,有没有其他方法可以通过像 powershell/api 这样的 devops 将数据从 json 文件添加到 cosmos DB?

    答案是肯定的。

    我们可以尝试使用Azure powershell 任务来执行以下powershell脚本:

    param([string]$cosmosDbName
         ,[string]$resourceGroup
         ,[string]$databaseName
         ,[string[]]$collectionNames
         ,[string]$principalUser
         ,[string]$principalPassword
         ,[string]$principalTennant)
    
    Write-Output "Loggin in with Service Principal $servicePrincipal"
    az login --service-principal -u $principalUser -p $principalPassword -t $principalTennant
    
    Write-Output "Check if database exists: $databaseName"
    if ((az cosmosdb database exists -d $databaseName -n $cosmosDbName -g $resourceGroup) -ne "true")
    {
      Write-Output "Creating database: $databaseName"
      az cosmosdb database create -d $databaseName -n $cosmosDbName -g $resourceGroup
    }
    
    foreach ($collectionName in $collectionNames)
    {
      Write-Output "Check if collection exists: $collectionName"
      if ((az cosmosdb collection exists -c $collectionName -d $databaseName -n $cosmosDbName -g $resourceGroup) -ne "true")
      {
        Write-Output "Creating collection: $collectionName"
        az cosmosdb collection create -c $collectionName -d $databaseName -n $cosmosDbName -g $resourceGroup
      }
    }
    
    Write-Output "List Collections"
    az cosmosdb collection list -d $databaseName -n $cosmosDbName -g $resourceGroup
    

    然后按Script Arguments后面的三个点,添加PowerShell脚本中定义的参数(把所有参数放在Variables中):

    您可以查看great document 了解更多详情。

    【讨论】:

    • 谢谢,但本文档讨论了如何通过目前 ARM 模板支持的 powershell 创建数据库。我正在寻找可以将内容添加到集合中的东西。例如,假设我有 testdata.json 我想将数据添加/导入到集合中,这样测试用例就不会失败。
    【解决方案2】:

    我遇到了同样的情况,我需要在源代码控制中维护配置文档,并在 Cosmos 的各种实例发生变化时对其进行更新。我最终做的是编写一个 python 脚本来读取一个目录结构,一个文件夹用于我需要更新的每个集合,然后读取文件夹中的每个 json 文件并将其插入到 Cosmos 中。从那里,我将 python 脚本作为 Azure DevOps 中多阶段管道的一部分运行。

    这是我的概念验证代码https://github.com/tanzencoder/CosmosDBSeedDataExample的链接。

    这是一个指向管道https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/python-script?view=azure-devops的Python任务的链接

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多