【问题标题】:how to seed data in table storage?如何在表存储中播种数据?
【发布时间】:2019-12-01 17:32:14
【问题描述】:

我们如何播种表存储表以自动化部署过程?

我们在开发订阅的同一资源组中拥有以下资源:

  • 存储帐户
  • 存储帐户中为 blob 创建的事件
  • 在表存储中配置数据
  • 功能应用
  • 逻辑应用

为了自动部署这些资源,我从资源组下载了 ARM 模板:

然后我们可以简单地重新部署到任何目标资源组:

但是,这不会将存储表、事件、播种数据等资源部署到表中。

我们如何自动为表存储表播种以实现自动化部署?

【问题讨论】:

  • 这里有很多事情要做。因此,您正在尝试自动部署包含存储帐户、函数应用和逻辑应用的资源组? “存储帐户中的事件”是什么意思?什么是表存储中的“配置数据”?那是你的“种子”数据吗?你想做什么?请记住,表存储与 SQL 完全不同。
  • 在 devops 中,您将有一些进程将所有资源捆绑在一起,然后部署应用程序所需的一切,如服务、虚拟机等,现在假设其中一个依赖项是表存储中的数据集.例如存储键值对。我们如何将这些值作为实际 devops 部署的一部分播种?
  • 您可以在本地创建一个PS脚本并进行测试。使用此链接帮助您生成脚本 - docs.microsoft.com/en-us/azure/storage/tables/… 然后使用 CI/CD 管道,在您的 arm 模板之后部署所有内容后将其作为步骤包含

标签: c# azure-devops azure-functions azure-table-storage azure-blob-storage


【解决方案1】:

做这样的事情。

  1. 在您的项目中检查您的 CSV 文件
  2. 在您的构建定义中添加一个复制文件的步骤 - https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-files?view=azure-devops&tabs=yaml
  3. 在您的发布管道中运行您的 PS 脚本,就像我在上面的评论中提到的那样 - https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/powershell?view=azure-devops

你可以在你的 PS 脚本中使用类似的东西来加载 csv 文件

# Load the CSV
$csv = Import-CSV $PSScriptRoot'\yourSeedData.csv'

# And push it to storage
ForEach ($line in $csv)
{
    $entity = New-Object -TypeName Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity -ArgumentList $line.PartitionKey, $line.RowKey
    if($line.Description -ne $null) {
        $entity.Properties.Add("Property1", $line.Property1)
    }
    $entity.Properties.Add("Property2", $line.Property2)

    $result = $table.CloudTable.Execute([Microsoft.WindowsAzure.Storage.Table.TableOperation]::InsertOrReplace($entity))
}

【讨论】:

    【解决方案2】:

    我选择了 this 选项来使用 powershell 自动播种数据:

    $partitionKey1 = "partition1"
    $partitionKey2 = "partition2"
    
    # add four rows 
    Add-AzTableRow `
        -table $cloudTable `
        -partitionKey $partitionKey1 `
        -rowKey ("CA") -property @{"username"="Chris";"userid"=1}
    
    Add-AzTableRow `
        -table $cloudTable `
        -partitionKey $partitionKey2 `
        -rowKey ("NM") -property @{"username"="Jessie";"userid"=2}
    
    Add-AzTableRow `
        -table $cloudTable `
        -partitionKey $partitionKey1 `
        -rowKey ("WA") -property @{"username"="Christine";"userid"=3}
    
    Add-AzTableRow `
        -table $cloudTable `
        -partitionKey $partitionKey2 `
        -rowKey ("TX") -property @{"username"="Steven";"userid"=4}
    

    【讨论】:

    • 如果您有大量数据,您可以包含一个 CSV 文件,然后使用 PS 将其读入并为您的 azure 存储表播种
    • 有一个例子吗/?
    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 2021-09-04
    • 2019-09-15
    • 2021-04-18
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多