2017-04-26 109 views
1

我需要使用PowerShell將大量數據(從SQL查詢中的TERADATA)導出到csv文件。 該過程正在運行,但速度非常慢。 我使用這個代碼導出:通過Powershell緩慢導出sql數據到csv

($DataSet.Tables[0] | ConvertTo-Csv -delimiter "|" -NoTypeInformation) -replace '"', "" | Out-File $extractFile -Force 

$ extractFile就是我希望把我的CSV文件的路徑。

你知不知道爲什麼這麼慢,我該如何處理?

+2

*大量數據* =您最好使用TPT導出。 – dnoeth

+0

您是否有關於如何使用TPT導出的任何文檔?我是teradata的新手,我沒有在TPT上找到好的文檔。 –

+1

查看TPT用戶指南http://www.info.teradata.com/HTMLPubs/DB_TTU_15_10/index.html#page/Load_and_Unload_Utilities/B035_2445_035K/2445ch06。 100.08.html#ww10985228 – dnoeth

回答

1

嘗試使用StreamWriter

$Stream = [System.IO.StreamWriter] $extractFile 
$DataSet.Tables[0] | ConvertTo-Csv -delimiter "|" -NoTypeInformation | % { $Stream.WriteLine($_.Replace('"', '')) } 
$Stream.Close() 

編輯:直接的WriteLine添加Replace使它以及更快。

您也可以利用Measure-Command來確定哪些部分正在減速​​以及哪些變化加快了速度。

+0

我有這個錯誤:您無法在空值表達式上調用方法。 E:\ PowerShell \ script \ Spaceman.ps1:26 char:77 + $ DataSet.Tables [0] | ConvertTo-Csv -delimiter「|」 -NoTypeInformation | %{$ Str ... –

+0

是造成這種情況的'StringWriter'或'Replace'嗎? – dbso

+0

StringWriter我認爲,這是一個加下劃線的 –