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

Posted

技术标签:

【中文标题】如何仅将 SQLPlus 错误保存到文件(从 powershell 调用)【英文标题】:Howto save only SQLPlus errors to file (called from powershell) 【发布时间】:2016-09-13 08:46:15 【问题描述】:

我正在从 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 将它们写入文件。

如果可能不使用 SPOOL,我希望 SQLPlus 有类似的东西(sqlplus 执行的脚本是用户定义的,如果我不应该更改它们,我希望它。

【问题讨论】:

【参考方案1】:

我自己找到的答案:

    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 是我声明的函数。

【讨论】:

以上是关于如何仅将 SQLPlus 错误保存到文件(从 powershell 调用)的主要内容,如果未能解决你的问题,请参考以下文章

pandas - 如何仅将 DataFrame 的选定列保存到 HDF5

代码仅将文本文件的一行保存到数组中

是否可以仅将 HSQLDB 持久保存到内存中没有任何数据的文件?

ffmpeg仅将传入的RTP音频流保存到文件中

OctoberCMS:如何仅将 javascript 从组件添加到页面一次

SQLPlus 保存到 CSV 文件而不格式化