Check return status of psql command in unix shell scripting

后端 未结 2 1657
悲哀的现实
悲哀的现实 2020-12-16 10:01

I am using psql command to connect and issue a query on postgreSQL database. Can anybody let me know how to check the return status of the executed query in shell script.

相关标签:
2条回答
  • 2020-12-16 10:43

    As mentioned here, you can also add this line at the top of your SQL file/script:

    \set ON_ERROR_STOP true
    
    0 讨论(0)
  • 2020-12-16 10:53

    psql return code is documented as:

    EXIT STATUS
    psql returns 0 to the shell if it finished normally, 1 if a fatal error of its own occurs (e.g. out of memory, file not found), 2 if the connection to the server went bad and the session was not interactive, and 3 if an error occurred in a script and the variable ON_ERROR_STOP was set.

    You probably just want to use ON_ERROR_STOP.

    Failure getting tested and reported to the shell:

    $ psql -d test -v "ON_ERROR_STOP=1" <<EOF
    select error;
    select 'OK';
    EOF
    
    ERROR:  column "error" does not exist
    LINE 1: select error;
    
    $ echo $?
    3
    

    Failure getting ignored and not reported to the shell:

    $ psql -d test  <<EOF
    select error;
    select 'OK';
    EOF
    ERROR:  column "error" does not exist
    LINE 1: select error;
                   ^
     ?column? 
    ----------
     OK
    (1 row)
    
    $ echo $?
    0
    
    0 讨论(0)
提交回复
热议问题