2016-04-15 194 views
0

我需要一種方法來使用PowerShell在遠程Oracle數據庫上執行SQL(通過導入.SQL腳本)。除此之外,我還試圖在所需的文件夾位置以.xls格式輸出結果。爲了增加趣味性,我還想按照自動計劃運行此任務。請幫忙 !Oracle Sql和Powershell:執行查詢,打印/輸出結果

我迄今爲止得到:

[System.Reflection.Assembly]::LoadWithPartialName ("System.Data.OracleClient") | Out-Null 
$connection = "my TNS entry" 
$queryString = "my SQL query"  
$command = new-Object System.Data.OracleClient.OracleCommand($queryString, $connection) 
$connection.Open() 
$reader = $command.ExecuteReader() 
$tempArr = @() 
#read all rows into a hash table 
while ($reader.Read()) 
    { 
    $row = @{} 
    for ($i = 0; $i -lt $reader.FieldCount; $i++) 
    { 
     $row[$reader.GetName($i)] = $reader.GetValue($i) 
    } 
    #convert hashtable into an array of PSObjects 
    $tempArr+= new-object psobject -property $row 
    } 
$connection.Close() 
write-host "Conn State--> " $connection.State 
$tmpArr | Export-Csv "my File Path" -NoTypeInformation 
$Error[0] | fl -Force 

回答

0

最簡單的方法是通過PowerShell來驅動sqlplus.exe。執行SQL和獲得輸出你這樣做:

$result = sqlplus.exe @file.sql [credentials/server] 
#parse result into CSV here which can be loaded into excel 

你可以安排這個腳本是這樣的:

schtasks.exe /create /TN sqlplus /TR "Powershell -File script.ps1" /ST 10 ... 

爲此,您需要安裝sqlplus的(它與Oracle快捷和你可以在沒有它的情況下安裝它)。這顯然引入了不需要的依賴關係,但是sqlplus可以用來檢查數據庫並執行任何可能是好事情的事情。

+0

majkinetor,我很想在沒有sqlplus.exe方法的情況下執行此操作。我能夠通過最新的編輯獲得一些腳本。想法? –