使用 Azure 函数迭代 blob 存储中的文本文件
Iterating through text files in blob storage, using Azure functions
这里是 Azure 的新手。我最近接管了一个项目的大修,其中使用 Visual Basic 从非结构化文本文件中提取数据并将其插入到数据库表中。
长话短说,这个 VB 脚本有很多问题,所以我正在使用 Powershell 重写它。它不是很复杂,基本上只是逐行检查文件并使用不同的开始和停止信息提取数据,下面是一个小例子:
$fileName = ""
$fileContents = ""
$filePath = Get-ChildItem -Path C:\share\Batch -Exclude csv
for ($i = 0; $i -lt $filePath.Count; $i++) {
$fileName = $filePath[$i].Name
$fileContents = Get-Content $filePath[$i].FullName
getTempLog $fileContents
getAiringLog $fileContents
getSteamLog $fileContents
getProductionSummary $fileContents
}
function getTempLog {
param ($fileContents)
$tempLogStart = 0
$fileContents | foreach-object {
# end condition
if ([int]$TempLogStart -eq 1 -and $_ -like "Genomluftning Flöde (m3/h) log:*") {
break
}
#output tempLog data
if ([int]$TempLogStart -eq 1) {
Write-Host $_.Substring(0, 14) #this should go into database
Write-Host $_.Substring(24, 4)
}
# start condition
if ($_ -like "Temperature log:*") {
$TempLogStart = 1
}
}
}
当决定将此解决方案移至云端并将文件上传到 Azure Blob 存储时,事情当然变得有点复杂。
创建一个使用 Blob 存储作为输入的 Azure 函数不是什么大问题,但尝试以与我在本地文件时相同的方式读取 blob,即
$inputBlob | foreach-object {
}
效果不佳,因为 blob 输入变量似乎被视为一个长的连续字符串。我完全以错误的方式处理这件事吗?
正如@David Diamant 在评论部分建议的那样,要使用 PowerShell 遍历 blob 存储中的文本文件,我们可以使用以下命令:
$inputblob.Split([Environment]::NewLine)
这里是 Azure 的新手。我最近接管了一个项目的大修,其中使用 Visual Basic 从非结构化文本文件中提取数据并将其插入到数据库表中。
长话短说,这个 VB 脚本有很多问题,所以我正在使用 Powershell 重写它。它不是很复杂,基本上只是逐行检查文件并使用不同的开始和停止信息提取数据,下面是一个小例子:
$fileName = ""
$fileContents = ""
$filePath = Get-ChildItem -Path C:\share\Batch -Exclude csv
for ($i = 0; $i -lt $filePath.Count; $i++) {
$fileName = $filePath[$i].Name
$fileContents = Get-Content $filePath[$i].FullName
getTempLog $fileContents
getAiringLog $fileContents
getSteamLog $fileContents
getProductionSummary $fileContents
}
function getTempLog {
param ($fileContents)
$tempLogStart = 0
$fileContents | foreach-object {
# end condition
if ([int]$TempLogStart -eq 1 -and $_ -like "Genomluftning Flöde (m3/h) log:*") {
break
}
#output tempLog data
if ([int]$TempLogStart -eq 1) {
Write-Host $_.Substring(0, 14) #this should go into database
Write-Host $_.Substring(24, 4)
}
# start condition
if ($_ -like "Temperature log:*") {
$TempLogStart = 1
}
}
}
当决定将此解决方案移至云端并将文件上传到 Azure Blob 存储时,事情当然变得有点复杂。
创建一个使用 Blob 存储作为输入的 Azure 函数不是什么大问题,但尝试以与我在本地文件时相同的方式读取 blob,即
$inputBlob | foreach-object {
}
效果不佳,因为 blob 输入变量似乎被视为一个长的连续字符串。我完全以错误的方式处理这件事吗?
正如@David Diamant 在评论部分建议的那样,要使用 PowerShell 遍历 blob 存储中的文本文件,我们可以使用以下命令:
$inputblob.Split([Environment]::NewLine)