我试图在1个SQL插入命令上将2个单独的数组插入到多个记录中。我已经完成了foreach命令,但它只接受其中一个数组。我曾尝试做嵌套的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列将始终相同。
答案 0 :(得分:1)
根据您的评论进行了修订。应该很容易放入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;
}
答案 1 :(得分:0)
基于新添加的预期结果
$array1 = @(1, 2, 3)
$array2 = @("a", "b", "c")
$sqlQuery = [System.Text.StringBuilder]::new()
$sqlQuery.AppendLine("INSERT INTO tbl_File(Column1, Column2, Column3)")
$sqlQuery.AppendLine("VALUES ")
$hash = @{
A1 = $array1
A2 = $array2
}
$counter = $array1.count # Supposedly both arrays always contain same number of elements.
for ($i = 0; $i -le $counter - 1; $i++)
{
$sqlQuery.AppendLine("('Dummy Data', '" + $hash['A1'][$i] + "', '" + $hash['A2'][$i] + "')")
}
$sqlQuery.ToString();
结果是:
INSERT INTO tbl_File(Column1, Column2, Column3)
VALUES
('Dummy Data', '1', 'a')
('Dummy Data', '2', 'b')
('Dummy Data', '3', 'c')
(旧解决方案)根据您的评论,我认为这是您想要在表中显示的结果:
Column1 Column2 Column3
Dummy Data 1 2 3 a b c
此PS脚本生成您需要的INSERT语句:
$array1 = @(1, 2, 3)
$array2 = @("a", "b", "c")
$sqlQuery = [System.Text.StringBuilder]::new()
$sqlQuery.AppendLine("INSERT INTO tbl_File(Column1, Column2, Column3)")
$sqlQuery.AppendLine("VALUES ")
$sqlQuery.AppendLine("('Dummy Data', '" + "$array1" + "', '" + "$array2" + "')")
$sqlQuery.ToString();
结果是:
INSERT INTO tbl_File(Column1, Column2, Column3)
VALUES
('Dummy Data', '1 2 3', 'a b c')