我需要连接在 Powershell 中创建的两个表。问题在于,在它们共享的 5 列中,每个表中有两列不同。我怎样才能连接这两个表,然后能够对它们进行排序。我猜我会让两个人做以下事情:
例子:
表格1
列:a、b、c、d、e
表2
a、x、c、d、z 列
我是否必须向每个空表添加一个新列,但代表另一个表中缺少的列,以便当我执行 table1 + table2 时,它们不会删除任何数据?
没有 sql 连接内容的代码示例。
$Command.CommandText = "SELECT job_number, job_desc, permit_number, pieces, rate, postage_total FROM monticello_charges WHERE (insert_date >= '$from') AND (insert_date < '$to') ORDER BY job_number"
$Command2.CommandText = "SELECT job_number, description, permit_number, pieces, rate, total FROM mailshop_charges WHERE (mailing_date >= '$from') AND (mailing_date < '$to')ORDER BY permit_number, job_number"
$Reader = $Command.ExecuteReader()
$Reader2 = $Command2.ExecuteReader()
###################################
#Do not add entries that have a [permit_number] of (360) and [rate] less than (0)
###################################
$results = @()
while ($Reader.Read())
{
$row = [ordered]@{}
for ($i = 0; $i -lt $Reader.FieldCount; $i++)
{
if($reader.GetValue(2) -eq 360 -and $reader.GetValue(4) -lt 0)
{
#pass over it
}
else
{
$row[$reader.GetName($i)] = $reader.GetValue($i)
}
}
$results += new-object psobject -property $row
}
###################################
# Build the second table and replace 280 permits to (M)
###################################
$results2 = @()
while ($Reader2.Read())
{
$row = [ordered]@{}
for ($i = 0; $i -lt $Reader2.FieldCount; $i++)
{
if($i -eq 2 -and $reader2.GetValue($i) -eq 280)
{
$row[$reader2.GetName($i)] = "M"
#$counter++
}
else
{
$row[$reader2.GetName($i)] = $reader2.GetValue($i)
}
}
$results2 += new-object psobject -property $row
}
$connection.Close();
$connection2.Close();
###################################
#Combine the tables and sort,then inject to CSV output file.
##################################
$finalResult = $results + $results2;
#$finalResult = $finalResult | sort-object @{Expression = {$_.permit_number}; Ascending = $true},{$_.job_number}
$finalResult | sort-object @{Expression = {$_.permit_number}; Ascending = $true},{$_.job_number} | export-csv c:\Users\cpharr\Desktop\out.csv
Write-Host "Report has been exported to current directoy. Filename:[out.csv]"
提前致谢!
好的,假设您没有链接的条目并且所有记录都是单独的,您可以这样做:
$T2Keys = $Results2|gm|?{$_.MemberType -match "Property"}|Select -ExpandProperty Name
$T1Keys = $Results|gm|?{$_.MemberType -match "Property"}|Select -ExpandProperty Name
$KeysToAdd = $T2Keys|?{$T1Keys -notcontains $_}
$Results3 = @()
$Results3 += $Results
$KeysToAdd|%{$Results3|Add-Member $_ ""}
$Results3+=$Results2
这会查询第一个表的属性到变量。它对第二个表执行相同的操作。它查找第二个表中不在第一个表中的属性,并将它们保存到变量中。然后它创建一个空数组,向其中添加第一个表,添加缺少的字段,然后向其中添加第二个表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)