是否有针对export-csv的跳过重复项?

时间:2019-03-19 17:04:03

标签: powershell

我有一个查询,用于获取有关数据库的系统数据

$data = Query "SELECT [server_name]
      ,[sessionID]
      ,[user]
      ,[ElapsedTime]
from table"
$data | Export-Csv -Path $Path\data.csv -NoTypeInformation

最近我发现导出的数据中存在重复的条目,例如冗余的会话ID。有没有导出和跳过重复条目的选项?

类似

$data | Export-Csv -Path $Path\data.csv -NoTypeInformation -skipduplicates

例如,如果表具有:

table

导出的csv仅应包含:

one entry

我认为有些人可能建议我选择与众不同的地方,并避免所有这些。但是然后我该如何例如仅选择不同的sessionID,因为例如经过时间不是唯一的,所以不同的应该不会影响它

2 个答案:

答案 0 :(得分:3)

在导出到csv之前,您可以使用其他管道排除重复项。您可以基于要排除重复项的属性来添加。下面是一个示例-

$data | Select-Object -Unique SessionId, User, ElapsedTime | Export-Csv -Path $Path\data.csv -NoTypeInformation

答案 1 :(得分:1)

防止重复的另一种方法是将GROUP BY子句添加到您的SQL查询中:

SELECT [server_name]
      ,[sessionID]
      ,[user]
      ,MAX([ElapsedTime]) AS ElapsedTime 
from table 
GROUP BY [server_name],[sessionID],[user]

这将消除具有不同ElapsedTime值的任何行,否则这些行将重复。