首页 > 解决方案 > Powershell foreach 在多行上插入 INSERT INTO SQL Server DB

问题描述

我正在尝试将 2 个单独的数组插入到 1 个 SQL 插入命令上的多个记录中。我已经完成了 foreach 命令,但它只接受 1 个数组。我试过做嵌套的 foreach 语句,但这只会影响许多记录。以下是我到目前为止的代码。我没有将我的连接代码发布到我的数据库,但我确保它连接到数据库。

$array1 = @(1,2,3)
$array2 = @(a,b,c)

foreach ($file in $array1)
        { 
         $SqlQuery.Append("USE $SQLDBName;")
         $SqlQuery.Append("INSERT INTO tbl_File(Column1, Column2, Column3)")
         $SqlQuery.Append("VALUES('Dummy Data', '$file', '$array2');")
        }

我最困惑的是如何让两个数组都正确解析到数据库中。我希望我解释正确。什么都有帮助!

这是它需要看起来的示例:

Column 1   |  Column 2   |  Column 3
Dummy Data   User Input1   User Input1
Dummy Data   User Input2   User Input2
Dummy Data   User Input3   User Input3

这就是我希望它看起来的样子,第 2 列是第一个数组,第 3 列是第二个数组。第 1 列将始终相同。

标签: sqlsql-serverpowershellforeach

解决方案


根据您的意见修改。应该很容易放入sql stmt

这是为每个索引位置并排从两个数组中提取值的方法

$array1 = @(1,2,3)
$array2 = @('a','b','c')

$counter = 0;
foreach ($file in $array1)
        { 
            Write-Host $file $array2[$counter]
            $counter +=1;
        }

如果要将整个数组存储在列中,则可能需要将其转换为字符串并对其进行定界

$array1 = @(1,2,3)
$array2 = @('a','b','c')

$counter = 0;
foreach ($file in $array1)
        { 
            Write-Host $file ([string]::Join(',', $array2))
            $counter +=1;
        }

推荐阅读