如何在 table 存储中播种数据?
how to seed data in table storage?
我们如何播种 table 存储 table 以自动化部署过程?
我们在开发订阅中的同一资源组中获得了以下资源:
- 存储帐户
- 创建 blob 的存储帐户中的事件
- table 存储中的配置数据
- 功能应用
- 逻辑应用程序
为了自动化部署这些资源,我从资源组下载了ARM模板:
然后我们可以简单地重新部署到任何目标资源组:
但是,这不会部署存储 tables、事件、将数据播种到 tables 等资源。
我们如何自动播种 table 存储 tables 以便自动部署?
我使用 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 文件
- 在您的构建定义中添加一个复制文件的步骤 - https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-files?view=azure-devops&tabs=yaml
- 在你的发布管道中 运行 你的 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))
}
我们如何播种 table 存储 table 以自动化部署过程?
我们在开发订阅中的同一资源组中获得了以下资源:
- 存储帐户
- 创建 blob 的存储帐户中的事件
- table 存储中的配置数据
- 功能应用
- 逻辑应用程序
为了自动化部署这些资源,我从资源组下载了ARM模板:
然后我们可以简单地重新部署到任何目标资源组:
但是,这不会部署存储 tables、事件、将数据播种到 tables 等资源。
我们如何自动播种 table 存储 tables 以便自动部署?
我使用 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 文件
- 在您的构建定义中添加一个复制文件的步骤 - https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-files?view=azure-devops&tabs=yaml
- 在你的发布管道中 运行 你的 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))
}