아래 test.sql 화일과 갈이 일련의 sql 문들이 저장되어 있는 화일이 있습니다.
이 sql 명령을 한꺼번에 실생하라면  psql 다음에 -f 옵션을 지정하여 화일명을 지정하면 됩니다.
그런데 sql 문을 자세히 보니깐, 
select version; 구문이 잘못됐네요. 괄호가 빠졌네요.
정확한 구문은 select version(); 입니다.
	[postgres@olmaster:~/oradba]$ cat test.sql
	select current_user;
	select version;
	select current_schema;
잘못된 구문을 수정하지 않고, -f 옵션 지정하여 그냥 실행하면 어찌될까요?
	[postgres@olmaster:~/oradba]$ psql -f test.sql
	 current_user
	--------------
	 postgres
	(1 row)
	psql:test.sql:2: ERROR:  column "version" does not exist
	LINE 1: select version;
		       ^
	 current_schema
	----------------
	 public
	(1 row)
	[postgres@olmaster:~/oradba]$ 
위의 결과를 보면 version 관련 구문에서 에러를 밸었구, 그 다음 문장인 select current_schema; 문은 정상 실행되었습니다.
아이고 이런..
우리가 원하는건 에러나는 구문에서 더 이상 진행되지 않고 멈추는 겁니다.
즉 select version; 에서 에러발생하면 그 아래의 sql 문은 더이상 실행시키고 싶지 않습니다.
어떻게 하면 될까요??
아주 쉽습니다. 아래 처럼!!
	[postgres@olmaster:~/oradba]$ psql -f test.sql -v ON_ERROR_STOP=ON
	 current_user
	--------------
	 postgres
	(1 row)
	psql:test.sql:2: ERROR:  column "version" does not exist
	LINE 1: select version;
		       ^
	[postgres@olmaster:~/oradba]$ 
또 다른 방법은 -v 옵션 지정없이 test.sql 화일 안에 지정할수도 있습니다.
아래 처럼 말이죠.
	[postgres@olmaster:~/oradba]$ cat test.sql
	[postgres@olmaster:~/oradba]$ psql -f test.sql	 current_user	--------------	 postgres	(1 row)
	psql:test.sql:2: ERROR:  column "version" does not exist	LINE 1: select version;		       ^
	[postgres@olmaster:~/oradba]$ 
[이 게시물은 PostgresDBA님에 의해 2013-06-24 16:57:11 SQL에서 이동 됨]