2016-04-15 3 views
0

Мне нужен способ выполнить SQL (путем импорта скрипта .SQL) на удаленную базу данных Oracle с помощью PowerShell. В дополнение к этому я также пытаюсь вывести результаты в формате .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

Самый простой способ управлять sqlplus.exe с помощью PowerShell. Для выполнения 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 (он поставляется с оракулом экспресс и вы можете установить его без него). Это, очевидно, вводит зависимость, которая не нужна, но sqlplus может использоваться для изучения базы данных и делать какие-то вещи, которые могут быть полезными.

+0

majkinetor, я бы очень хотел сделать это без метода sqlplus.exe. Мне удалось немного продвинуться по сценарию с последним правлением. Мысли? –