将multiplt文件的内容传递到存储过程

时间:2019-02-14 15:17:51

标签: powershell

当前,我正在使用此脚本读取D:\驱动器上的所有ID.txt文件,并输出包含所有内容的CSV文件。在每个文件中,只会有一个数字,并且总是在第一行。

$PATH = "D:\"
$Out = @()

Get-ChildItem $PATH -Filter ID.txt -File -Recurse | foreach {
    $fileData = @{
        "Content" = (Get-Content $_.FullName -Raw)
    }
    $Out += (New-Object PSObject -Property $fileData)
}

$Out | Export-Csv "C:\out.csv" -NoTypeInformation 

这已经为我们工作了很长时间,但是球门柱已经移动了。

我们现在不希望输出带有ID的CSV文件,而是希望将ID.txt文件的内容作为变量直接传递给存储过程。

存储过程以varchar(max)的形式接受输入,并以IN语句的形式传递给查询。

是否可以生成一个逗号分隔的列表,并将其一举传递给存储过程,而无需先创建具有值的文件?

1 个答案:

答案 0 :(得分:0)

$Out -join ","会将数组格式化为逗号分隔的字符串,假设$ out是所需ID的一维数组。

当您从文件Select-Object -ExpandProperty ID(其中ID为列名)中获取Get-Content时,可能需要使用>XM_024446048.1 PREDICTED: Homo sapiens mannosidase alpha class 2A member 1 (MAN2A1), transcript variant X2, mRNA CAGCCCCC TGAGCGAC TCCCTAATGTG ACAGTAAAGAA >NM_001308028.1 Homo sapiens FER tyrosine kinase (FER), transcript variant 2, mRNA CAGCCC CCGTGACGC GGGGTGGTGACT GGCTC GGTGGT GTGAC >NM_0013082323028.1 H STZ mRSN1A CAGCCC CCGTGACGC GGG GTGGTGA CTGGCTCCGGAGT CTGAGGGGTTCGG 来获取仅包含所需ID值的数组。