You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vertica vsql.exe触发ERROR 3326时返回errorlevel 0的检测方法求助

检测vsql执行中ERROR 3326错误的批处理方案

针对你遇到的vsql返回ERROR 3326却返回errorlevel 0的问题,可通过以下几种方案在批处理中实现错误检测:

方法1:捕获并检查标准错误输出

ERROR 3326这类执行错误会被vsql输出到标准错误流(stderr),我们可以将stderr重定向到日志文件,再检查日志中是否包含目标错误信息:

修改后的批处理脚本:

@echo off
:: 清理历史错误日志
if exist error.log del error.log

:: 执行查询,将标准错误输出写入error.log
vsql.exe -h <hostname> -U <user> -w <pwd> -o output.csv -Ac "SELECT ....;" 2> error.log

:: 检查日志中是否存在ERROR 3326
findstr /C:"ERROR 3326" error.log >nul
if %errorlevel% equ 0 (
    echo 触发ERROR 3326:执行时间超过限制
    :: 可添加错误处理逻辑,比如删除不完整的CSV文件
    del output.csv
    exit /b 1
)

:: 处理其他常规错误(如连接、语法错误)
if errorlevel 1 (
    echo 执行出现其他异常
    exit /b 1
)

echo 查询执行成功

方法2:验证输出CSV的完整性

成功执行的CSV文件末尾会带有(#### rows)格式的统计行,可通过检查该行是否存在来判断查询是否完整完成:

修改后的批处理脚本:

@echo off
vsql.exe -h <hostname> -U <user> -w <pwd> -o output.csv -Ac "SELECT ....;"

:: 检查CSV最后一行是否符合成功执行的结尾格式
findstr /R "^([0-9]* rows)$" output.csv >nul
if %errorlevel% neq 0 (
    echo CSV文件不完整,疑似触发ERROR 3326错误
    :: 添加错误处理逻辑
    del output.csv
    exit /b 1
)

:: 处理其他常规错误
if errorlevel 1 (
    echo 执行出现其他异常
    exit /b 1
)

echo 查询执行成功

方法3:结合两种方法(推荐)

同时检查错误日志和CSV完整性,能大幅提升异常检测的可靠性:

@echo off
if exist error.log del error.log

vsql.exe -h <hostname> -U <user> -w <pwd> -o output.csv -Ac "SELECT ....;" 2> error.log

:: 检查ERROR 3326错误
findstr /C:"ERROR 3326" error.log >nul
if %errorlevel% equ 0 (
    echo 触发ERROR 3326:执行时间超过限制
    del output.csv
    exit /b 1
)

:: 检查CSV文件完整性
findstr /R "^([0-9]* rows)$" output.csv >nul
if %errorlevel% neq 0 (
    echo CSV文件不完整,执行异常
    del output.csv
    exit /b 1
)

:: 处理其他常规错误
if errorlevel 1 (
    echo 执行出现其他异常
    exit /b 1
)

echo 查询执行成功

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:55:45