[英]Powershell : How to Remove Duplicates
嘗試建議的方法后對代碼進行了更改
The source code is :
foreach($line in $csv)
{
$MySQLQuery=$line.query
$mycommand = New-Object
MySql.Data.MySqlClient.MySqlCommand($MySQLQuery,$myConnection)
$dataAdapter = New-Object
MySql.Data.MySqlClient.MySqlDataAdapter($mycommand)
$dataSet = New-Object System.Data.DataSet
$dataAdapter.Fill($dataSet,"data")
$mycommand.Dispose()
$newData = $dataSet.Tables["data"]
$rowCount = $newData.Rows.count
if($rowCount -ne 0)
{
if($previousData -eq $null ){$extractedData = $newData;}
else {$extractedData = Compare-object $previousData $newData | Where {
$_.SideIndicator -like "=>" } | Select -ExpandProperty InputObject }
$previousData = $newData
}
$newData
包含具有列名“ stock_name”的表, 必須根據這些表刪除重復項。 $ previousData的類型為datatable,用於存儲來自先前迭代的數據。 $ extractedData用於保存差異數據。
================================================== ======================
我的理解是,您希望$extractedData
中的數據是$newDataset
新數據,而不是基於stock_name
$previousData
。 因此,您可以像這樣更改您的Compare-object
:
if($newDataset.Rows.count -gt $previousData.Rows.count){
$extractedData = $newDataset | ? { ($previousData.stock_name -notcontains $_.stock_name)
}
else
{ $extractedData = $newDataset}
我猜它會起作用。
如果要使用新數據,為什么看起來需要以前的數據? 嘗試過濾和擴展Compare-Object
cmdlet的結果。 下面的代碼僅返回“; lkj”數據。
$DatasetTable = "asdf","qwer","zxcv"
$newData = "asdf","qwer","zxcv",";lkj"
$newDataSet = Compare-object $DatasetTable $newData | Where { $_.SideIndicator -like "=>" } | Select -ExpandProperty InputObject
$newDataSet
不過,很難說,因為在您的第一個+=
運算符之前,我看不到$previousdata
變量在哪里建立。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.