如何解决循环遍历 REST 端点以读取文档并写入 Azure Blob 存储
使用下面的 PowerShell 代码读取端点并将结果写入 Blob 存储。但是,如果端点有多个文档。我们如何遍历每个文档并将结果作为单独的文件(file1、file2....)写入 blob 存储中。如果不可能有单独的文件,我希望将所有文档存储在一个 JSON 文件 (FILE.JSON) 中。
例如:
端点------------blob 存储
doc1-----------------file1.json
doc2-----------------file2.json
等等
或者以上方法是不可能的:
doc1,doc2...所有 DOCS========> 转到 file.json
#$Credential = 获取凭据
$Params = @{
"URI" = 'https://e832702c-faad-46e5-a585-885b8613c2ce-bluemix.cloudant.com/testdb/_all_docs?include_docs=true'
#"Authentication" = 'Basic'
#"Credential" = $Credential
}
$Result = (Invoke-RestMethod @Params).rows.doc | ConvertTo-Json -Depth 100
Write-Host "the result is :" $Result
$context=New-AzStorageContext -StorageAccountName "genstorage999" -StorageAccountKey "<your key>"
$container=Get-AzStorageContainer -Name "blobcontainer" -Context $context
$content = [system.Text.Encoding]::UTF8.GetBytes($Result)
$container.CloudBlobContainer.GetBlockBlobReference("testapp2.json").UploadFromByteArray($content,$content.Length)
代码参考:Filter JSON ducument using PowerShell
解决方法
根据您之前的问题和您的描述,结果数据中会有一些行,每个 row
都会有一个 doc
。如果请求响应中有多行,您希望将 doc
内容写入存储中的单独 .json 文件。我假设您的结果数据来自此链接(仅用于演示的模拟 API):https://stantest1016.blob.core.windows.net/static/result.json,其结果包含 2 行:
你可以试试下面的代码来满足你的要求:
$storageAccountKey= '<your key>'
$context = New-AzStorageContext -StorageAccountName '<account name>' -StorageAccountKey $storageAccountKey
$container = Get-AzStorageContainer -Name 'testc' -Context $context
$result = Invoke-RestMethod -Uri 'https://stantest1016.blob.core.windows.net/static/result.json'
foreach($row in $result.rows){
$destBlobName ="doc_" + $row.doc._id + ".json"
$contentText = $row.doc | ConvertTo-Json -Compress
$container.CloudBlobContainer.GetBlockBlobReference($destBlobName).UploadTextAsync($contentText)
}
结果:
如果您有任何其他问题,请告诉我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。