------------------------------------------------------------------------------------------
查看postgresql 连接情况: select * from pg_stat_activity;
------------------------------------------------------------------------------------------
timestamp to unix
select user_id, date_part('epoch',create_time)::integer from tb_account;
------------------------------------------------------------------------------------------
unix to timestamp
select user_id, to_timestamp(online_time) as online from login_log order by user_id;
select to_timestamp(online_time)::timestamp without time zone as online_t from login_log;
------------------------------------------------------------------------------------------
列出所有数据库
\list
------------------------------------------------------------------------------------------
查看当前连接,当前的操作
select * from pg_stat_activity;
------------------------------------------------------------------------------------------
psql 显示查询时间
\timing
------------------------------------------------------------------------------------------
查询所有的索引,所有的表
select * from pg_stat_user_indexes;
select * from pg_stat_user_tables;
-------------------------------------------------------------------------------------------
client 编码
1 使用psql 里的 \encoding 命令。 \encoding 允许你动态修改客户端编码。 比如,\encoding utf8
2 使用 libpq 函数。 \encoding 在做此用途的时候实际上是调用 PQsetClientEncoding()。
int PQsetClientEncoding(PGconn *conn, const char *encoding);这里 conn 与后端的联接,而 encoding 是你想用的编码。如果编码设置成功它返回 0,否则返回 -1。本次联接的当前编码可以用下面函数显示:
int PQclientEncoding(const PGconn *conn);请注意它只返回编码 ID,而不是象 EUC_JP 这样的编码符号字串。 要把编码 ID 转换为编码符号,你可以用:
char *pg_encoding_to_char(int encoding_id);
3 使用 SET client_encoding TO 。 可以用 SQL 命令设置客户端编码:
SET CLIENT_ENCODING TO 'value';你还可以把 SQL 语法里的 SET NAMES用于这个目的:
SET NAMES 'value';查询当前客户端编码:
SHOW client_encoding;返回缺省编码:
RESET client_encoding;
4 使用 PGCLIENTENCODING。 如果在客户端的环境里定义了 PGCLIENTENCODING 环境变量, 那么在与服务器进行联接时将自动选择客户端编码。 (这个编码随后可以用上面谈到的任何其它方法覆盖。)
5 使用client_encoding配置变量。 如果在 postgresql.conf 里设置了 client_encoding 变量, 那么在与服务器建立了联接之后,这个客户端编码将自动选定。(这个设置随后可以被上面提到 的其他方法覆盖。)
--------------------------------------------------------------------------------------------
无需手动输入密码
1 可以设置pg_hba.conf
2 可以在用户目录下新建 .pgpass文件, 内容为ip:port:dbname:username:password 例如 localhost:5432:*:postgres:321654
3 可以通过设置PGPASSWORD 环境变量
--------------------------------------------------------------------------------------------
删除所有表
1 创建函数
CREATE FUNCTION drop_all_table() RETURNS void AS $$
DECLARE
tmp VARCHAR(512);
DECLARE names CURSOR FOR
select tablename from pg_tables where schemaname='public';
BEGIN
FOR stmt IN names LOOP
tmp := 'DROP TABLE '|| quote_ident(stmt.tablename) || ' CASCADE;';
RAISE NOTICE 'notice: %', tmp;
EXECUTE 'DROP TABLE '|| quote_ident(stmt.tablename) || ' CASCADE;';
END LOOP;
RAISE NOTICE 'finished .....';
END;
$$ LANGUAGE plpgsql;
2 执行 select drop_all_table();
----------------------------------------------------------------------------------------------
加注释, 给表结构加注释
COMMENT ON COLUMN table.col IS 'this is comment';
postgresql 只能通加comment加注释, 不能在create语句里加
----------------------------------------------------------------------------------------------