1. 数据
postgres=# select * from tb1;
id | name
-----+------
2 | aa
3 | aa
4 | aa
7 | aa
8 | aa
9 | aa
10 | aa
1 | cc
5 | cc
6 | cc
100 | vv
(11 rows)
vi test.sql
写入 select * from tb1 where id=:id; (:+变量名)
保存。
[postgres@localhost ~]$ psql postgres postgres -v id=1 -f /home/postgres/test.sql
id | name ----+------
1 | cc
(1 row)
[postgres@localhost ~]$ psql postgres postgres -v id=2 -f /home/postgres/test.sql
id | name ----+------
2 | aa
(1 row)
[postgres@localhost ~]$ psql postgres postgres -v id=2 -c '\i /home/postgres/test.sql '
id | name ----+------
2 | aa
(1 row)
5. psql使用文档
[postgres@localhost ~]$ psql --help
psql is the Postgresql interactive terminal.
Usage:
psql [OPTION]... [DBNAME [USERNAME]]
General options:
-c,--command=COMMAND run only single command (sql or internal) and exit
-d,--dbname=DBNAME database name to connect to (default: "postgres")
-f,--file=FILENAME execute commands from file,then exit
-l,--list list available databases,then exit
-v,--set=,--variable=NAME=VALUE
set psql variable NAME to VALUE -V,--version output version information,then exit -X,--no-psqlrc do not read startup file (~/.psqlrc) -1 ("one"),--single-transaction execute as a single transaction (if non-interactive) -?,--help show this help,then exit Input and output options: -a,--echo-all echo all input from script -e,--echo-queries echo commands sent to server -E,--echo-hidden display queries that internal commands generate -L,--log-file=FILENAME send session log to file -n,--no-readline disable enhanced command line editing (readline) -o,--output=FILENAME send query results to file (or |pipe) -q,--quiet run quietly (no messages,only query output) -s,--single-step single-step mode (confirm each query) -S,--single-line single-line mode (end of line terminates sql command) Output format options: -A,--no-align unaligned table output mode -F,--field-separator=STRING set field separator (default: "|") -H,--html HTML table output mode -P,--pset=VAR[=ARG] set printing option VAR to ARG (see \pset command) -R,--record-separator=STRING set record separator (default: newline) -t,--tuples-only print rows only -T,--table-attr=TEXT set HTML table tag attributes (e.g.,width,border) -x,--expanded turn on expanded table output -z,--field-separator-zero set field separator to zero byte -0,--record-separator-zero set record separator to zero byte Connection options: -h,--host=HOSTNAME database server host or socket directory (default: "/usr/local/postgres-9.3.5/data") -p,--port=PORT database server port (default: "5432") -U,--username=USERNAME database user name (default: "postgres") -w,--no-password never prompt for password -W,--password force password prompt (should happen automatically) For more information,type "\?" (for internal commands) or "\help" (for sql commands) from within psql,or consult the psql section in the Postgresql documentation.
参考:http://francs3.blog.163.com/blog/static/40576727201342834353302/