[英]Can I use SQL commands (such as join) on objects in powershell, without any SQL server/database involved?
作为免责声明,我不是专业的 powershell 脚本编写者,而更像是一个“脚本小子”级别的脚本编写者,他被分配的工作远远超出了他的工作范围,即技术支持。 :P
我一直在研究迁移脚本,以将一些非常旧的数据带入新的软件应用程序中。
作为其中的一部分,我使用以下代码“连接”两个对象(从 csv 文件导入)。 由于数据呈现给我的方式,我不得不针对相当大的数据集多次运行此连接脚本,并且需要很长时间才能完成。
我正在使用的代码是:
Import-Csv extract-accounts.csv | ForEach-Object -Begin {
$Jobs = @{}
} -Process {
$Jobs.Add($_.NAME,$_.ID)
}
Import-Csv Job.csv | ForEach-Object {
$_ | Add-Member -MemberType NoteProperty -Name ContactID -Value $Jobs."$($_.DisplayName)" -PassThru
} | Export-Csv -NoTypeInformation Joined-AccountJob.csv
我想知道的是,我可以在 powershell 中的对象上使用类似 SQL 的命令来简化和加速这个过程吗? 或者,我是否会更好地获取 CSV 文件,将它们推送到 SQL 数据库(我不知道这个过程),执行我的连接,然后将它们导出回 csv 文件?
谢谢!
SQL 命令,不完全是。 虽然我确实找到了一个网站,描述了一种方法。
基本上他们所描述的,以及听起来对我来说正确的方法是将每一列从你想要的 CSV 中提取到一个变量中,然后将它们转储到一个文本文件中,每个变量用逗号分隔。
如果这对您不起作用并且您无论如何都想将它们导入 SQL,本文将介绍通过多种方法将 CSV 导入 SQL 的过程。
在查看了这些选项后,我没有看到可以完全简化我正在做的事情的方法,但是我确实发现了 where-object,这对我项目的其他领域有所帮助。 下面是一个例子:
Import-Csv JobContact.csv |
Select-Object JobContactRole,JobExternalReference,ContactExternalReference |
Where-Object {$_.JobContactRole -ne "Policyholder" -and $_.JobContactrole -ne "Broker"} |
Export-Csv Cleaned-JobContact.csv -NoTypeInformation
我希望这可以帮助别人!
Import-Csv extract-accounts.csv |
Join
(Import-Csv Job.csv) -On ContactId
有关详细信息,请参阅:在 Powershell 中,将两个表合并为一个的最佳方法是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.