pgsql使用

参考文档:http://www.postgres.cn/docs/10/


安装:

https://www.myfreax.com/how-to-install-postgresql-on-ubuntu-18-04/

进入pgsql

sudo -u postgres psql 
##执行脚本
echo 'sudo PGPASSWORD=pass_2021 psql -h 127.0.0.1 -p 5432 -U nft' > pgsql.sh
##给权限
sudo chmod 777 pgsql.sh
##执行
./pgsql.sh

备份数据库

pg_dump -h 127.0.0.1 -U nft -d nft -p 5434 -f /tmp/nft.sql

创建用户和数据库

create user xicheng createdb createrole login password 'pass_word';


create user gc createdb createrole login password 'pass_word';

#切换成xicheng用户运行再创建 数据库

docker run -it --rm dencold/pgcli postgresql://xicheng:pass_2020@172.16.0.10:5432/postgres
CREATE DATABASE xicheng;

切换数据库

 psql -U xicheng -d xicheng 


 psql -U gc -d gc

查看数据库

\l

更改数据库角色

alter database xicheng owner to xicheng;

修改表名

ALTER TABLE 表名 ADD 字段 类型;

删除视图/表

drop view/table 表名/视图名

增加字段

ALTER TABLE lease_order ADD COLUMN lender_meta jsonb NOT NULL DEFAULT '{}';


ALTER TABLE pay_order ADD COLUMN out_trade_no text NOT NULL DEFAULT '';

修改字段类型

 alter table account_balance alter COLUMN freeze_id type text ;

更改数据表/视图角色

DO $$DECLARE r record;
BEGIN
FOR r IN SELECT tablename/viewname FROM pg_tables/pg_views WHERE schemaname = 'public'
LOOP
    EXECUTE 'alter table '|| r.tablename/r.viewname ||' owner to new_owner;';
END LOOP;
END$$;
DO $$DECLARE r record;
BEGIN
FOR r IN SELECT viewname FROM pg_views WHERE schemaname = 'public'
LOOP
    EXECUTE 'alter table '|| r.viewname ||' owner to wallet;';
END LOOP;
END$$;

DO $$DECLARE r record;
BEGIN
FOR r IN SELECT tablename FROM pg_tables WHERE schemaname = 'public'
LOOP
    EXECUTE 'alter table '|| r.tablename ||' owner to wallet;';
END LOOP;
END$$;

创建视图

---car_model_view
CREATE VIEW car_model_view AS
SELECT cm.id AS car_model_id,cm.name as car_model_name,cm.remark as car_model_remark,cb.car_vender_id,cb.id as car_brand_id,
cb.brand_name as car_brand_name,cb.logo as car_brand_logo
FROM car_model cm LEFT JOIN car_brand cb
ON cm.car_brand_id = cb.id;

清空表数据保留表结构

//当表没有其他关系时
TRUNCATE TABLE tablename;


//当表中有外键时,要用级联方式删所有关联的数据
TRUNCATE TABLE tablename CASCADE;

数据库备份

1、从一台机子复制到另外一台机子

scp car.sql ubuntu@192.168.1.5:/tmp/car.sql

2、pgsql导入数据表

(1)直接psql命令执行SQL文件

psql -h 172.16.0.10 -d xicheng -U xicheng -f /tmp/car.sql;

(2)连接db后执行sql文件

#因为这里是容器运行,所以需要将宿主机文件加载进容器,-v是目录挂载实现宿主机与容器机子目录互通


#连接  -v是映射卷挂载目录
docker run -it -v /tmp:/tmp --rm dencold/pgcli postgresql://xicheng:pass_2020@172.16.0.10:5432/xicheng


#进入数据库执行文件
\i /tmp/car.sql;

更新jsonb字段

update account_profile set id_img_url='{}', driving_licence_img_url='{}'  where account_id = '229535169685297152';

随机数

SELECT floor(random()*(25-10)+10);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值