【问题标题】:Oracle Sql and Powershell : Execute query, print/output resultsOracle Sql 和 Powershell:执行查询,打印/输出结果
【发布时间】:2016-04-16 03:31:35
【问题描述】:

我需要一种使用 PowerShell 在远程 Oracle DB 上执行 SQL(通过导入 .SQL 脚本)的方法。除此之外,我还尝试在所需的文件夹位置以 .xls 格式输出结果。为了增加乐趣,我还想按自动计划运行此任务。请帮忙!

目前为止:

[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 

【问题讨论】:

    标签: sql oracle powershell


    【解决方案1】:

    最简单的方法是通过 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 express,您可以在没有它的情况下安装它)。这显然引入了不需要的依赖关系,但 sqlplus 可用于检查数据库并执行任何可能是好事的事情。

    【讨论】:

    • majkinetor ,我非常想在没有 sqlplus.exe 方法的情况下执行此操作。通过最新的编辑,我能够在脚本方面领先一点。想法?
    猜你喜欢
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2012-08-15
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多