postgre
删除数据库:dropdb -h 172.31.3.79 -p 5432 -U postgres zcy_test
while read line; do echo $line cmd="SELECT pg_terminate_backend($line);" psql -h 172.31.3.79 -d dbe -U postgres -t -c "$cmd" done < ./lock
postgre教程:https://www.sjkjc.com/postgresql-ref/unnest/
连接数据库:psql -h 10.3.4.2 -p 5432 testdb(数据库名) posgres(用户名)
查看数据库 \l
查看表 \d
创建数据库 create database airfow
连接到某个数据库 \c airflow
显示表t的结构 \d t
显示表t的key \d t_pkey
显示所有的schema \dn
显示所有的用户 \du
指定客户端字符编码 \encoding gbk \encoding utf8
显示一行信息: \echo hello zcy
关闭自动提交功能: \set AUTOCOMMIT off
========
切换用户:su postgres
启动:psql
查看有哪些数据库: \l
切换到数据库air: \c air
列出数据库中所有表: \d
列出指定表的所有字段信息: \d+ dag 或者 \d dag
退出:\q
创建数据库region_pre_airflow 所属这是airflow:create database region_pre_airflow owner airflow;
=================
(1)列出所有的数据库
(2)切换数据库
(3)列出当前数据库下的数据表
(4)列出指定表的所有字段
(5)查看指定表的基本情况
(6)退出登录
==================
=================
新建一个Linux新用户
adduser zcy
切换到postgres用户
su postgres
使用psql命令登录PostgreSQL控制台
psql
创建数据库用户 zcy
CREATE USER zcy WITH PASSWORD 'zcy';
创建用户数据库,这里为 zcydb ,并指定所有者为 zcy
CREATE DATABASE zcydb OWNER zcy;
将 zcydb 数据库的所有权限都赋予 zcydb,否则 zcydb 只能登录控制台,没有任何数据库操作权限
GRANT ALL PRIVILEGES ON DATABASE zcydb to zcy;
退出
\q
==========================
psql -d zcydb
CREATE TABLE zcy_tbl(name VARCHAR(20), signup_date DATE);
INSERT INTO zcy_tbl(name, signup_date) VALUES('张三', '2013-12-22');
UPDATE zcy_tbl set name = '李四' WHERE name = '张三';
增加一列:ALTER TABLE zcy_tbl ADD email VARCHAR(40);
修改表名: ALTER TABLE zcy_tbl RENAME TO zcy_tbl_bkp;
SELECT * FROM zcy_tbl;
==========================
PostgreSQL 9.5 引入了一项新功能:没有则插入,有则更新
insert into "BASEINFO"."SG_ORG_COMPANY_B" ("ID", "NAME", "NAME_ABBREVIATION", "COMPANY_TYPE") VALUES ('a', 'b', 'c', 1111) ON CONFLICT ("ID") DO UPDATE SET "NAME"='b', "NAME_ABBREVIATION"='c'
=================批量插入
util.inserDataToDB(dbcnyb,'"CNYB"."PRE_DQ_PLANT"',uncoverData,['ID', 'ORG_ID', 'RT_ORG_ID', 'DATE', 'DTIME', 'CTIME', 'INDEX', 'MARK', 'FNAME', 'P_PR','P_PTR'])
def inserDataToDB(cnyb,tbl,df,cols): try: output = BytesIO() df.to_csv(output, sep='\t', index=False, header=False,columns=cols) output = output.getvalue() with cnyb.cursor() as cur: cur.copy_from(BytesIO(output), tbl) cnyb.commit() except Exception,e: cnyb.rollback() LOG.error("insert data fail,ex=%s"%(traceback.format_exc()))
============null相加会导致null扩散,PostgreSQL空值null参与运算的处理方法:coalesce
SELECT sum("P16")+coalesce(SUM("P17"),0) FROM "CNYB"."PRE_CDQ_PLANT" where "ID"='98ac7b8341b94b609fe394eaa16ba2a5'
=======
posgre的数据类型比MYSQL要多
CAST是标准SQL类型转换函数
postgre支持定长和可变长度的一维和多维数组
postgre中的数组小标默认是从1开始,不能直接修改多维数组中的某一维