簡體   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