繁体   English   中英

我可以在 PowerShell 中的对象上使用 SQL 命令(例如 join),而不涉及任何 SQL 服务器/数据库吗?

[英]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 命令,不完全是。 虽然我确实找到了一个网站,描述了一种方法。

http://social.technet.microsoft.com/Forums/windowsserver/en-US/e242e1e9-6a8f-4a46-a884-8bd6811b5e35/combining-multiple-csv-files-with-powershell

基本上他们所描述的,以及听起来对我来说正确的方法是将每一列从你想要的 CSV 中提取到一个变量中,然后将它们转储到一个文本文件中,每个变量用逗号分隔。

如果这对您不起作用并且您无论如何都想将它们导入 SQL,本文将介绍通过多种方法将 CSV 导入 SQL 的过程。

http://blogs.technet.com/b/heyscriptingguy/archive/2011/11/28/four-easy-ways-to-import-csv-files-to-sql-server-with-powershell.aspx

在查看了这些选项后,我没有看到可以完全简化我正在做的事情的方法,但是我确实发现了 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM