使用 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)