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)列出所有的数据库

mysql: show databases
psql: \l或\list

(2)切换数据库

mysql: use dbname
psql: \c dbname
 

(3)列出当前数据库下的数据表

mysql: show tables
psql: \d
 

(4)列出指定表的所有字段

mysql: show columns from table name
psql: \d tablename
 

(5)查看指定表的基本情况

mysql: describe tablename
psql: \d+ tablename
 

(6)退出登录

mysql: quit 或者\q
psql:\q

==================

=================

新建一个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开始,不能直接修改多维数组中的某一维

posted on 2018-03-23 13:08  我和你并没有不同  阅读(546)  评论(0编辑  收藏  举报