首页 文章

如何只将SQLPlus错误保存到文件(从powershell调用)

提问于
浏览
0

我正在从powershell调用SQLPlus,我试图向用户显示错误消息,如果出现问题 . 如果没有问题,脚本应该继续 .

这就是我使用的

sqlplus -S $user/$user@$server @$file

对于sqlcmd,我设法这样做:

sqlcmd -S $serverLower -U $user -P $user -d $user -i $file -r1 2>errors.txt 1>$null
if (CheckIfFileExistsAndNotEmpty errors.txt)
    {
    get-content errors.txt | write-host
    }

选项-r设置为1将输出错误,2> errors.txt将它们写入文件 .

我想要一些类似于SQLPlus的东西,如果可能的话不使用SPOOL(sqlplus执行的脚本是用户定义的,如果我不想改变它我想要它 .

1 回答

  • 0

    我发现自己的答案:

    AddAsFirstLine $file "SPOOL $errorfilepath"
        Add-Content -Path $file -Value "SPOOL off"
        sqlplus -S $user/$user@$server @$file 1>$null
    
        $errors = Select-String -Path $errorfilepath -Pattern "(SP2|ORA|Msg.*Level.*State.*Server.*Line|SQLConverter-Error:|Init-Error:|Invalid.filename)"
        Set-Content -Path errors.txt $errors
        Remove-Item $errorfilepath -Force | Out-Null
        }
    
        if (CheckIfFileExistsAndNotEmpty errors.txt)
        {
            Write-Host "Error while executing script"
            get-content errors.txt | write-host
        }
    

    AddAsFirstLine和CheckIfFileExistsAndNotEmpty是我声明的函数 .

相关问题