[笔记]pg常用命令

数据库版本 :9.6.6

注意 :PostgreSQL中的不同类型的权限有SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTE 和 USAGE。

1. 登录PG数据库

以管理员身份 postgres 登陆,然后通过

 #psql -U postgres
 #sudo -i -u postgres
 ​
 $ psql  xc_hzh_linan                    #登录xc_hzh_linan数据库
 $ psql -U postgres test               #以postgres用户身份,登录test数据库
 psql -h localhost -p 5432 -U postgress testdb

界面效果为:

 postgres@ubuntu:~$ psql
 psql (9.5.19)
 Type "help" for help.
 ​
 postgres=# 

  1. 简单说一下pgsql 的相关命令

使用反斜线作为命令前缀.

 退出    \q
 列出所有的数据库      \l
 列出所有的数据库的大小      \l+
 更改当前连接的数据库       \c
 列出当前数据库的连接信息    \connect
 列出当前数据库和连接的详细信息 \conninfo
 查看当前数据库里面的表和拥有者和表大小         \dt +
 展示所有用户           \dg
 ​
 查看所有表名的列表             \d
 获取表结构                   \d a
 展示所有用户               \du
 查看t_sms表的结构      \d t_sms 
 展示数据库里面的所有的表         \dt
 列出所有的数据库的详细信息(包括数据库大小和字符格式)         \l+
 显示用户访问权限。                            \z或\dp
 显示所有可设置的访问权限                     \h GRAN
 显示用户的对所有数据库表的详细访问权限     \dp或者\z
 确认当前连接的用户为超级用户postgres,且该用户后创建角色和数据库的权限等     #select current_user;
 在超级用户连接postgres后,设置不允许普通用户a连接数据库         #alter role a nologin;
 ​
 使用普通用户a连接数据库正常                   #\c highgo a
 ​
 查看当前连接的用户名:
 foo=#select * from current_user;
 或
 foo=#select user;
 ​
 查看所有用户名:
 foo=#\du
 ​
 数据库表的备份与恢复:
 pg_dump -h 192.168.2.242 -U postgres -p 5432 -c --if-exists -t t_sms dev_huishishuju > t_sms.db 远程备份

在这里插入图片描述使用案例 :

 t_gj_tzy=# \l+
                                                                    List of databases
    Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   |  Size   | Tablespace |                Description                 
 -----------+----------+----------+------------+------------+-----------------------+---------+------------+--------------------------------------------
  postgres  | postgres | UTF8     | zh_CN.utf8 | zh_CN.utf8 |                       | 7079 kB | pg_default | default administrative connection database
  t_gj_tzy  | wsgjjkzg | UTF8     | zh_CN.utf8 | zh_CN.utf8 | =Tc/wsgjjkzg         +| 21 GB   | pg_default | 
            |          |          |            |            | wsgjjkzg=CTc/wsgjjkzg |         |            | 
  template0 | postgres | UTF8     | zh_CN.utf8 | zh_CN.utf8 | =c/postgres          +| 6969 kB | pg_default | unmodifiable empty database
 ​
 PostgreSQL 查找当前数据库的所有表 select * from pg_tables where schemaname = 'public';

查看每个表的大小

 postgres=# \dt+
                                  List of relations
  Schema |            Name            | Type  |  Owner   |    Size    | Description 
 --------+----------------------------+-------+----------+------------+-------------
  public | acknowledges               | table | postgres | 0 bytes    | 
  public | actions                    | table | postgres | 16 kB      | 
  public | alerts                     | table | postgres | 8192 bytes | 
  public | application_discovery      | table | postgres | 0 bytes    | 
  public | application_prototype      | table | postgres | 8192 bytes | 
  public | application_template       | table | postgres | 40 kB      | 
  public | applications               | table | postgres | 56 kB      | 
  public | auditlog                   | table | postgres | 0 bytes    | 
  public | auditlog_details           | table | postgres | 8192 bytes | 

添加索引

 CREATE INDEX idx_ke_kid
 ​
   ON base.keyword_engine
 ​
   USING btree
 ​
   (keyword_id);

2、创建用户以及相关权限设置

创建用户

 create role zhaobsh;
 ​
 create user wzq with password '123456';                       #设置用户,并设置密码
 create database xc_hzh_linan owner xchzhlinan ;         #创建数据库以及所属用户

更改用户密码

 alter role zhaobsh with password 'Test6530';
 ​
 or
 ​
 \password zhaobsh
 ​
 ALTER USER postgres WITH PASSWORD 'postgres';

注:

  • 密码postgres要用引号引起来

  • 命令最后有分号

修改数据库 属主

 alter database "GSCloud1903" owner to zhaobsh;
 ALTER ROLE user_4 WITH CREATEROLE;            /*赋予创建角色的权限*/  
 alter database "GSCloud1903" rename to zhaobsh;              --修改schema的名称

授权给用户 PostgreSQL中预定义了许多不同类型的内置权限,如:SELECT、INSERT、UPDATE、DELETE、RULE、REFERENCES、TRIGGER、CREATE、TEMPORARY、EXECUTE和USAGE。

 grant all on database "GSCloud1903" to zhaobsh;                          #赋予用户zhaobsh数据库所有权限
 ​
 grant UPDATE ON database "GSCloud1903" to zhaobsh;             # 赋予用户zhaobsh数据库更新权限
 ​
 /* 赋给用户表的所有权限 */
 GRANT ALL ON tablename TO user; 
 ​
 /* 赋给用户数据库的所有权限 */
 GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser;
 ​
 /* 撤销用户权限 */
 REVOKE privileges ON tablename FROM user;

连接用户和数据库 使用创建的用户能登录查看相应数据库,则可进行下一步。

 [root@localhost ~]# psql -h localhost -U monitoring -p 54321 wiseucmsg

3、撤销用户权限

撤销用户 runoob权限:

 =# REVOKE ALL ON COMPANY FROM runoob;                 

删除用户:

 runoobdb=# drop user runoob;

设置是 supseruser 以及 登录权限

 alter user zhaobsh superuser login

修改指定用户指定权限

 alter user postgres superuser createrole createdb replication;
 注意:如果出现 FATAL: role '...' is not permitted to log in.  的错误
 ​
 alter user postgres superuser createrole createdb replication login;

4、查看用户权限

1、查看某用户的表权限

 select * from information_schema.table_privileges where grantee='user_name';

2、查看usage权限表

 select * from information_schema.usage_privileges where grantee='user_name';

3、查看存储过程函数相关权限表

 select * from information_schema.routine_privileges where grantee='user_name';

4、建用户授权

 create user user_name;
 alter user user_name with password '';
 alter user user_name with CONNECTION LIMIT  20;#连接数限制
 123

创建数据库

 CREATE DATABASE dbname;
 ​
 postgres=# create database dbtest owner username; -- 创建数据库指定所属者
 CREATE DATABASE

或者

 $ createdb -h localhost -p 5432 -U postgres runoobdb
 password ******

将数据库得权限,全部赋给某个用户

 postgres=# grant all on database dbtest to username; -- 将dbtest所有权限赋值给username
 GRANT
 ​
 设置是 supseruser 以及 登录权限
 alter user zhaobsh superuser login

在pg数据库中创建只读用户可以采用如下方法。大体实现就是将特定schema的相关权限赋予只读用户

 --创建用户
 CREATE USER readonly WITH ENCRYPTED PASSWORD '123456';
 ​
 --设置用户默认开启只读事务
 ALTER USER readonly SET default_transaction_read_only = ON;
 ​
 --设置用户登录权限
 ​
 ALTER USER readonly WITH login;
 ​
 --将schema中usage权限赋予给readonly用户,访问所有已存在的表
 GRANT usage ON SCHEMA xyh TO readonly;
 ​
 --将schema中表的查询权限赋予给readonly用户,访问所有已存在的表
 GRANT SELECT ON ALL tables IN SCHEMA xyh TO readonly;
 ​
 --未来访问xyh模式下所有新建的表:
 ALTER DEFAULT privileges IN SCHEMA xyh GRANT SELECT ON tables TO readonly;
 ​
  
 ​
 --查数据库
 ​
 select * from pg_database;
 ​
 --查模式
 ​
 select exists(select 1 from pg_namespace where nspname='xyh'); 

5、 修改linux系统中postgres用户的密码

PostgreSQL会创建一个默认的linux用户postgres,修改该用户密码的方法如下: 步骤一:删除用户postgres的密码

 sudo  passwd -d postgres

步骤二:设置用户postgres的密码

 sudo -u postgres passwd

系统提示输入新的密码

 Enter new UNIX password: 
 ​
 Retype new UNIX password: 
 ​
 passwd: password updated successfully

6、使用pgAdmin客户端 工具创建数据库

pgAdmin 工具提供了完整操作数据库的功能: 在这里插入图片描述

7、数据库的导入导出

导入整个数据库

 psql -U username databasename < /data/dum.sql -- 用户名和数据库名
 pg_dump ga_zj_taizhou.sql | psql wang_wang

或者

 进入具体的数据库导入
 postgres@ubuntu:~$ psql
 psql (9.6.6)
 Type "help" for help.
 ​
 postgres=# \c wang_wang     
 You are now connected to database "wang_wang" as user "postgres".
 wang_wang=# \i ga_zj_taizhou.sql

在这里插入图片描述注意 : 因为是从其他地方备份出来的sql文件,从一个数据库导入另一台数据库可能会报下面的错误

 \i /root/test.sql            #导入数据库数据
 psql:ga_zj_taizhou.sql:1408597: ERROR:  role "pm" does not exist
 psql:ga_zj_taizhou.sql:1408598: ERROR:  role "laoyw" does not exist

解决办法 : 格式:create user 自定义用户名称 superuser;

 postgres=# create user root superuser ;

然后\q退出数据库,再实现psql -d your_db -f sql_path 例如:

 # psql -d mz -f /usr/mydownloads/proj_llmrs.sql 

8、忘记postgres用户密码怎么办?

环境:

 Ubuntu 16.04
 postgres : apt-get install postgresql 9.5版本

sudo vim /etc/postgresql/9.5/main/pg_hba.conf

 local   all             postgres                                peer
 ​
 # TYPE  DATABASE        USER            ADDRESS                 METHOD
 ​
 # "local" is for Unix domain socket connections only
 local   all             all                                     peer
 # IPv4 local connections:
 host    all             all             127.0.0.1/32            md5
 # IPv6 local connections:
 host    all             all             ::1/128                 md5

重启postgressql服务。

 ~$ systemctl restart postgresq

免密码登录

 localhost:~$ psql -U postgres -h 127.0.0.1
 psql (9.5.12)
 SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
 Type "help" for help.
 postgres=#

修改密码并退出

 postgres=# alter user postgres with password '123';
 ALTER ROLE
 postgres=# \q

修改回认证并退出: trust改为md5

sudo vim /etc/postgresql/9.5/main/pg_hba.conf

 # IPv4 local connections:
 host    all             all             127.0.0.1/32            trust

重启并登陆:

 parallels@parallels-vm:~$ systemctl restart postgresql
 parallels@parallels-vm:~$ psql -U postgres -h 127.0.0.1
 Password for user postgres: 
 psql (9.5.12)
 SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
 Type "help" for help.

9. Ubuntu系统

创建新用户

 root@ubuntu:~# useradd wang
 root@ubuntu:~# passwd wang
 Enter new UNIX password: 
 Retype new UNIX password: 
 passwd: password updated successfully

常见报错 : 没有家目录,新用户登陆错误

 root@ubuntu:~# su - wang
 No directory, logging in with HOME=/
 $ 

Linux授予某个用户对某个文件夹的读写权限

 $ sudo chmod -R 755 /data/data1
 ​
 $ chown -R user1.user1 1.txt
 查看目录的权限
 data# ls -l 

备份数据 从外网拷贝到本地 scp -r *.sql zhaobsh@192.187.100.1:/data/data1

导入数据 登录数据库 postgres@dbmaser:~$ psql -U wsgjjkzg -d t_gj_tzy < /data/data1/t_gj_tzy.20191029235826.sql

查看导入的数据 su - postgresl \c GSCloud1903 #切换到GSCloud1903 postgres=# \c t_gj_tzy You are now connected to database “t_gj_tzy” as user “postgres”.

\c dt+ #查看当前数据库里面的表和拥有者和表大小

清空数据库中所有数据

 //删除public模式以及模式里面所有的对象
 DROP SCHEMA public CASCADE;
 //创建public模式
 CREATE SCHEMA public;

清除全表,建议使用truncate

2种方法都只删数据,保留表结构

方法一 ,适用数据量较小的情况

 delete from  tablename;
 

方法二,适合删除大量数据,速度快

 TRUNCATE TABLE tablename;
 ​
 若该表有外键,要用级联方式删所有关联的数据
 ​
 TRUNCATE TABLE tablename CASCADE;
 12345
 test03=# select * from test;  
  id | info | crt_time   
 ----+------+----------  
 (0 rows) 

注意 :

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

清除所有超过1w条数据的表数据。

 SELECT * FROM count_em_all(10000) AS r ORDER BY r.num_rows DESC;
 

扩展 在 mysql中,只需要执行:

 TRUNCATE table_name;
 

即可,数据会情况,而且自增id也会变回0;

但在 postgresql 则稍有不同,因为 postgresql 的自增id是通过序列 sequence来完成的,

所以情况数据后,还需要还原序列 sequence:

 TRUNCATE bigtable, fattable RESTART IDENTITY;
 

官方文档:PostgreSQL: Documentation: 9.2: TRUNCATE

另一种方式:(因为版本不同,可能命令不同)

 truncate table table_name;
 alter sequence seq_name start 1;
 

postgres数据库中删除指定的数据的sql语句

查询数据库中default_table表中的name字段为空的条件

 SELECT * from default_table WHERE name is null;
 

删除数据库中default_table表的name字段为空的数据

 DELETE  FROM default_table WHERE  name is null;  
 

创建索引语句

 create index i_jdbc_sql_record_zh01 on t_jdbc_sql_record(c_bh_group,dt_zxsj,N_CHECKSTATUS,C_PSSQL_HASH);
 alter table t_jdbc_sql_content add constraint t_jdbc_sql_content_pkey primary key (C_BH);
 ​
 123

异步提交和unlogged table

 -- 异步提交,更改完重启数据库
  alter system set synchronous_commit to off;
  -- unlogged table 
  create unlogged table t_jdbc_sql_record 
  ...
  create unlogged table t_jdbc_sql_content 
 123456

POSTGRESQL 数据库导入导出

 导入整个数据库
 ​
 psql -U postgres(用户名)  数据库名(缺省时同用户名) < /data/dum.sql
 ​
 导出整个数据库
 1.导出数据库:方式一:pg_dump -U postgres -f c:\db.sqlpostgis
 ​
 方式二:pg_dump -Upostgres postgis > c:\db.sql
 ​
 pg_dump -h localhost -U postgres(用户名) 数据库名(缺省时同用户名)   >/data/dum.sql
 ​
 导出某个表
 ​
 pg_dump -h localhost -U postgres(用户名) 数据库名(缺省时同用户名)  -t table(表名) >/data/dum.sql
 ​
 导入具体表:
 ​
 psql -d postgis -f c:\ dump.sqlpostgres
 ​
 压缩方法
 ​
 一般用dump导出数据会比较大,推荐使用xz压缩
 ​
 压缩方法  xz dum.sql 会生成 dum.sql.xz 的文件
 ​
 ​
 xz压缩数据倒数数据库方法
 ​
 xzcat /data/dum.sql.xz | psql -h localhost -U postgres(用户名) 数据库名(缺省时同用户名)
 1234567891011121314151617181920212223242526272829

查看postgresql数据库用户系统权限、对象权限的方法

1、查看某用户的系统权限

 SELECT * FROM pg_roles WHERE rolname='postgres';

在这里插入图片描述 2、查看某用户的表权限

 select * from information_schema.table_privileges where grantee='postgres';

3、查看某用户的usage权限

 select * from information_schema.usage_privileges where grantee='postgres';

4、查看某用户在存储过程函数的执行权限

 select * from information_schema.routine_privileges where grantee='postgres';

5、查看某用户在某表的列上的权限

 select * from information_schema.column_privileges where grantee='postgres';

6、查看当前用户能够访问的数据类型

 select * from information_schema.data_type_privileges ;

7、查看用户自定义类型上授予的USAGE权限

 select * from information_schema.udt_privileges where grantee='postgres';

工作中常见用法 :

1.查看运行时间长的sql

 select pid,datname,usename,client_addr,query_start,now()-query_start as time_run, query from pg_stat_activity
 where state='active' order by time_run desc limit 20;

2.查看指定表空间下的表和索引

 SELECT  c.relname, t.spcname FROM  pg_class c left JOIN pg_tablespace t ON c.reltablespace = t.oid WHERE t.spcname = 'data1tbs';

默认表空间的话where判断 c.reltablespace=0 或 t.spcname is null

3、查看指定pid需要的锁状态

 select pc.relname,pl.* from pg_locks pl left join pg_class pc on pc.relfilenode=pl.relation where pl.pid=13912

4、查看未使用索引

 select schemaname,relname,indexrelname,idx_scan from pg_stat_user_indexes where idx_scan=0 and schemaname='public' and indexrelname not like '%_pkey'

5、查看指定表的索引

 select schemaname,relname,indexrelname,idx_scan from pg_stat_user_indexes where schemaname='public' and relname='visited_article'

6、某个pid在等待的锁的持有者

 select pl1.*,pl2.pid,pa.usename,pa.query from pg_locks pl1 left join pg_locks pl2 on pl1.transactionid=pl2.transactionid and pl2.granted
 left join pg_stat_activity pa on pl2.pid=pa.pid where pl1.pid=21641 and not pl1.granted

7、查看所有锁的状态

 select
      pg_stat_activity.datname,pg_class.relname,pg_locks.transactionid, pg_locks.mode, pg_locks.granted,
      pg_stat_activity.usename,substr(pg_stat_activity.query,1,30), pg_stat_activity.query_start,
      age(now(),pg_stat_activity.query_start) as "age", pg_stat_activity.pid
    from pg_stat_activity,pg_locks left
      outer join pg_class on (pg_locks.relation = pg_class.oid) 
    where pg_locks.pid=pg_stat_activity.pid order by query_start limit 100;

8、查看指定schema 里所有的索引大小,按从大到小的顺序排列

 select indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes where schemaname='public' order by pg_relation_size(relid) desc;
 ​

9、查询所有表大小,并且按从大到小排序

 select relname, pg_size_pretty(pg_relation_size(relid)) as size from pg_stat_user_tables ORDER BY size desc;

10、查询指定模式下面所有表大小,并按表大小排序

 select relname, pg_size_pretty(pg_relation_size(relid)) as size from pg_stat_user_tables where schemaname = 'authevent'  ORDER BY size desc;
 

–查看DB大小

 select pg_size_pretty(pg_database_size('ve'));  
 

–查看表大小(不含索引等信息)

 select pg_relation_size('user');                      
 select pg_size_pretty(pg_relation_size('use'))  
 

–查看每个DB的使用情况(读,写,缓存,更新,事务等)

 select * from pg_stat_database
 

–查看索引的使用情况

 select * from pg_stat_user_indexes;

–查看表所对应的数据文件路径与大小

 SELECT pg_relation_filepath(oid), relpages FROM pg_class WHERE relname = 'empsalary';
 1

–查看表空间大小

 select pg_tablespace_size('pg_default');

714 境内采集器

 SELECT  ip FROM asset_server where is_server=1 and  ip  not like '%163.106.130.%' and ip  not like '132.117.354.%' and idc_id not in(16,9)  and ip not IN('161.10.84.11','180.132.214.110')

27 大服务器

 SELECT  ip FROM asset_server where is_server=1 and  (ip   like '%183.106.110.%' or ip  like '122.227.254.%'  or ip  IN('80.102.214.130'))

24 境外采集器

 SELECT  ip FROM asset_server where is_server=1 and   idc_id in(16,9) and ip not in('57.39.42.18','143.331.144.190','113.10.10.11')

1 阿里云

 SELECT  ip FROM asset_server where  ip  IN('132.10.34.121')

4 v,pn 与浏览器专用 37.69.82.18(“浏览器代理服务器”) “183.211.104.114”

 SELECT  * FROM asset_server where is_server=1 and   idc_id in(16,9) and ip in('37.69.82.18','183.211.104.114')

4.6.5 排除境,外 阿里云

    SELECT  * FROM asset_server where is_server=1  and idc_id not in(16,9)  and ip not IN('132.110.194.141')

4.6.7 --统计全网服务器(按机房)

 select COUNT(ass.ip),ass.idc_id,idc.name  from  asset_server  ass  left join asset_serveridc idc on idc.id=ass.idc_id where ass.is_server=1 group by ass.idc_id,idc.name;

4.6.8 联合状态查询

–查询内存1g的

 select ass.ip,ast.memtotal from  asset_server ass inner join (select max(id),sid_id,cast(trim(both ' MB' from memtotal) as integer) as memtotal  from  asset_serverstatus group by sid_id,memtotal ) as  ast
 on ass.id=ast.sid_id where ass.is_server=1 and ast.memtotal<1200 order by ass.ip;

–查询内存1g的 排除香港

 select count(ass.ip) from  asset_server ass inner join (select max(id),sid_id, cast(trim(both ' MB' from memtotal) as integer) as memtotal  from  asset_serverstatus group by sid_id,memtotal ) as  ast
 on ass.id=ast.sid_id where ass.is_server=1 and ass.idc_id !=16 and ast.memtotal<1200;
 ​
 select ass.ip,ast.memtotal from  asset_server ass inner join (select max(id),sid_id,cast(trim(both ' MB' from memtotal) as integer) as memtotal  from  asset_serverstatus group by sid_id,memtotal ) as  ast
 on ass.id=ast.sid_id where ass.is_server=1 and ass.idc_id !=16 and ast.memtotal<1200 order by ass.ip;

–查询内存1g的 排除香港 部署有totalspider的

 select count(ass.ip) from  asset_server ass inner join (select max(id),sid_id,cast(trim(both ' MB' from memtotal) as integer) as memtotal  from  asset_serverstatus group by sid_id,memtotal ) as  ast
 on ass.id=ast.sid_id where ass.is_server=1 and ass.idc_id !=16 and ass.describe LIKE  '%totalspider%' and ast.memtotal<1200;

–查询内存大于1g 小于2g 排除香港的机器

 psql -h db.www.qwq.com -p 5432 -U yun -c "select ip, ast.memtotal from asset_server ass inner join (select max(id),sid_id,cast(trim(both ' MB' from memtotal) as integer) as memtotal from asset_serverstatus group by sid_id,memtotal ) as ast
 on ass.id=ast.sid_id where ass.is_server=1 and ass.idc_id !=16 and ast.memtotal>1200 and ast.memtotal<3000;"

查询机房归属地在上海的(代号42)的内存大小

 psql yunwei -c " select ass.ip,ast.memtotal from  asset_server ass inner join (select max(id),sid_id,cast(trim(both ' MB' from memtotal) as integer) as memtotal from asset_serverstatus group by sid_id,memtotal ) as ast on ass.id=ast.sid_id where ass.is_server=1 and ast.memtotal < 1024 and ass.idc_id=42 order by ass.ip;"

1、 postgres@ubuntu:~$ psql -U wzq -d template0 psql: FATAL: Peer authentication failed for user “wzq”

其中peer authentication 比较注目,很明显,错误和权限有关联。

参考链接PostgreSQL 修改设置数据库的默认用户以及权限. :PostgreSQL 修改设置数据库的默认用户以及权限. - 济南小老虎 - 博客园:PostgreSQL 修改设置数据库的默认用户以及权限._weixin_30265103的博客-CSDN博客

PostgreSQL清空表并保留表结构、清空数据库还原数据库为新建时的状态的方法 :PostgreSQL清空表并保留表结构、清空数据库还原数据库为新建时的状态的方法_路人甲JIA的博客-CSDN博客_pgsql 清空表

PostgreSQL 如何实现批量更新、删除、插入 :PostgreSQL 如何实现批量更新、删除、插入-阿里云开发者社区

postgresql 删除单个表的数据 :postgresql 删除单个表的数据_kmust20093211的博客-CSDN博客_postgresql 删除一条数据

postgresql批量删除表 :postgresql批量删除表_weixin_30384217的博客-CSDN博客

修改postgres密码 :修改postgres密码_渡人先渡己的博客-CSDN博客_postgres修改密码

查看postgresql数据库用户系统权限、对象权限的方法_PostgreSQL_脚本之家

在这里插入图片描述

10. pg数据制造

1. 分区表数据批量造数据

1.1 启动PostreSQL

 docker pull postgre
 ​
 docker run -e POSTGRES_PASSWORD=123456 -p 5432:5432 --name potgre postgres:latest
 ​
 psql -h 127.0.0.1 -p 5432 -U postgres -d postgres

下面的例子我们将为把订单 orders 表使用分区表来实现。order 中含有 id、user_id、create_time 三个属性,并根据 create_time 按照月份进行分区。

1.2 创建父表

 CREATE TABLE orders (id serial,user_id int4,create_time timestamp(0)) PARTITION BY RANGE(create_time);

1.3 创建分区表

 CREATE TABLE orders_history PARTITION OF orders FOR VALUES FROM ('2000-01-01') TO ('2020-03-01');
 ​
 CREATE TABLE orders_202003 PARTITION OF orders FOR VALUES FROM ('2020-03-01') TO ('2020-04-01');
 ​
 CREATE TABLE orders_202004 PARTITION OF orders FOR VALUES FROM ('2020-04-01') TO ('2020-05-01');
 ​
 CREATE TABLE orders_202005 PARTITION OF orders FOR VALUES FROM ('2020-05-01') TO ('2020-06-01');
 ​
 CREATE TABLE orders_202006 PARTITION OF orders FOR VALUES FROM ('2020-06-01') TO ('2020-07-01');

1.4 在分区上创建索引

 CREATE INDEX order_idx_history_create_time ON orders_history USING btree(create_time);
 ​
 CREATE INDEX order_idx_202003_create_time ON orders_202003 USING btree(create_time);
 ​
 CREATE INDEX order_idx_202004_create_time ON orders_202004 USING btree(create_time);
 ​
 CREATE INDEX order_idx_202005_create_time ON orders_202005 USING btree(create_time);
 ​
 CREATE INDEX order_idx_202006_create_time ON orders_202006 USING btree(create_time);

1.5 向分区表中插入数据

按照分钟进行数据的插入,如果需要创建海量数据可以把 1 minute 换成 1 millisecond(毫秒)或者 second(秒)

 INSERT INTO orders (user_id, create_time) select 1000, generate_series('2020-01-01'::date, '2020-05-31'::date, '1 minute');

11. ADB 批量

 1. 创建表
 CREATE TABLE orders (
 id serial,
 user_id int4,
 create_time DATE
 ) PARTITION BY RANGE (create_time) (START (date '1992-01-01') INCLUSIVE END (date '2000-01-01'));
 2. 插入数据
 INSERT INTO orders (user_id, create_time) select 1000, generate_series('1992-01-01'::date, '1992-04-01'::date, '1 minute');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/28818.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新世界-旧世界

以下内容是这两天朋友问答形成的一些观点&#xff0c;堆成一篇文章。看似没有关联性&#xff0c;但你仔细品味&#xff0c;你会感觉到它们其实讲的是一个事。至于是一个啥事&#xff0c;我不说&#xff0c;你们自己猜。 &#xff08;1&#xff09; 今年年初看见篇文章&#xff…

mdBook介绍及使用——使用 Markdown 创建你自己的博客和电子书

目录 介绍一、下载与创建项目1.下载2.初始化3.结构说明 二、编写文章与启动1.编写文章2.构建3.启动 mdbook 服务 三、其他配置 介绍 mdBook 是一个使用 Markdown 创建书籍的命令行工具。它非常适合创建产品或 API 文档、教程、课程材料或任何需要清晰、易于导航和可定制的演示…

Spring中如何获取Bean方法上的自定义注解

文章目录 背景描述场景复现问题追踪解决方案扩展思考 背景描述 项目中需要扫描出来所有 标注了自定义注解A的Service里面标注了自定义注解B的方法 来做后续处理。 基本的思路就是通过Spring提供的ApplicationContext#getBeansWithAnnotation反射 来实现。 但是&#xff0c;随…

QT C++入门学习(2) QT Creator写一个简单的上位机控制LED

上位机和下位机的概念 上位机&#xff1a;指的是可以直接发送操作指令的计算机或者单片机&#xff0c;一般提供用户操作交互界面并向用户展示反馈数据。 典型设备&#xff1a;电脑、平板、手机、面板、触摸屏 下位机&#xff1a;指的是与机器相连接的计算机或者单片机&#…

SpringBoot+Vue 车辆充电桩系统

文章目录 1、效果演示效果图技术栈 2、 前言介绍&#xff08;完整源码请私聊&#xff09;3、主要技术3.4.1 数据库概念结构设计3.4.2 数据库具体设计 4 系统功能的具体实现4.1 前台功能模块4.1.1 首页功能4.1.2 用户后台管理 4.2 后台功能模块4.2.1 管理员功能4.2.2 维修员功能…

SciencePub学术 | 计算机类重点SCIEI征稿中

SciencePub学术 刊源推荐: 计算机类重点SCI&EI征稿中&#xff01;影响因子高&#xff0c;对国人非常友好。信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 计算机类重点SCI&EI &#x1f4cc;【期刊简介】IF&#xff1a;7.5-8.0&#xff0c;JCR…

前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall

前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall&#xff0c; 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id13046 效果图如下&#xff1a; #### 使用方法 使用方法 <!-- proList: 条目数组数据 goProDetail:条目点击事…

微信小程序基础使用

微信小程序的基本使用 微信小程序文件类型 微信小程序主要提供了 4 种文件类型&#xff1a; 类型名称作用是否必须存在.wxml用于页面的布局结构&#xff0c;相当于网页中 .html 文件是.wxss用于页面的样式&#xff0c;相当于网页中的 .css 文件否.js用于页面的逻辑是.json用…

1.8C++流提取运算符重载

C流提取运算符重载 在 C中&#xff0c;流提取运算符&#xff08;>>&#xff09;是用于从流中提取数据的运算符。 C中的流提取运算符可以被重载&#xff0c;使得程序员可以自定义输入对象的方式&#xff0c;更方便地输入自定义的数据类型&#xff0c;也可以使得输入更加…

数字中国,开鸿见日

讲个小故事&#xff0c;《晋书乐广传》记载&#xff0c;西晋名士乐广&#xff0c;请大文学家潘岳替自己写一篇文章。潘岳让乐广把意思完完整整告诉他&#xff0c;再由他来动笔&#xff0c;最终写成了名扬当时的《呈太尉辞河南尹表》。时人看过这篇文章&#xff0c;评价乐广是“…

传输平台太多?难以管理?看这款跨网传输系统怎样解决

传输作为企业正常运行中最日常的行为&#xff0c;也意味着出现频率最高。微信、QQ、邮件、或是钉钉等办公软件&#xff0c;每天大家上班时开着各种软件&#xff0c;进行着不同的信息交互与传输。很多员工在工作时往往是哪个软件方便顺手就用哪个传输&#xff0c;但是这样也意味…

python打包后报错,无法启动,电脑缺少api-ms-win-core-path-11-1-0.dll

参考&#xff1a;《运行打包python程序时报&#xff1a;无法启动此程序&#xff0c;因为计算机中丢失 api-ms-win-core-path-l1-1-0.dll 尝试重新安装该程序以解决此问题。》 原因&#xff1a;python版本较高&#xff0c;打包时的python版本是python3.10&#xff0c;而运行打包…

xxl-job核心源码解析

xxl-job源码解析 如何自研一个xxljob 注册服务调度服务RPC组件(基建&#xff0c;底层严重依赖)日志服务告警服务 系统架构 执行流程 各大调度中心对比 1&#xff09;服务端启动流程 首先找到配置类 XxlJobAdminConfig 可以发现该类实现 InitializingBean接口&#xff0c;…

批量生成,本地推理,人工智能声音克隆框架PaddleSpeech本地批量克隆实践(Python3.10)

云端炼丹固然是极好的&#xff0c;但不能否认的是&#xff0c;成本要比本地高得多&#xff0c;同时考虑到深度学习的训练相对于推理来说成本也更高&#xff0c;这主要是因为它需要大量的数据、计算资源和时间等资源&#xff0c;并且对超参数的调整也要求较高&#xff0c;更适合…

熬夜三晚之深度解析DuckDB MetaPipeline

深度解析DuckDB MetaPipeline 深度解析DuckDB MetaPipeline 1.导语 2.基础理论 3.HashJoin深度解析 3.1 RESULT_COLLECTOR 3.2 PROJECTION 3.3 HASH_JOIN 4.Ready 4.1 翻转 4.2 MetaPipeline与pipeline 5.汇总 1.导语 DuckDB 是…

深入理解深度学习——Transformer:基础知识

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; 作为当下最先进的深度学习架构之一&#xff0c;Transformer被广泛应用于自然语言处理领域。它不单替代了以前流行的循环神经网络(recurrent neural network, RNN)和长短期记忆(long short-term memory, …

从 Google 删库,到蚂蚁跑路,Care 与 Fear 点燃的 Flare

Bytebase 第一次完成融资后写了一篇文章&#xff0c;主要讲了从行业层面做 Bytebase 的逻辑。一年过去了&#xff0c;这一年我们所处的开源/infra/数据库/企业服务赛道从热点归于平静&#xff0c;尤其在国内&#xff0c;又习惯性地反应过度&#xff0c;直接降到冰点。但从全球来…

Apache RocketMQ RCE漏洞复现(CVE-2023-33246)

RocketMQ RocketMQ是阿里巴巴在2012年开发的分布式消息中间件&#xff0c;专为万亿级超大规模的消息处理而设计&#xff0c;具有高吞吐量、低延迟、海量堆积、顺序收发等特点。它是阿里巴巴双十一购物狂欢节和众多大规模互联网业务场景的必备基础设施。 漏洞概述 在其5.1.0版…

基于Servlet+mysql+jsp学生宿舍信息管理系统

基于Servletmysqljsp学生宿舍信息管理系统 一、系统介绍二、功能展示1.用户登陆2.学生-主页面3.学生-缺勤记录4.学生-修改密码5.宿舍管理员-主页面6.宿舍管理员-学生查看7.宿舍管理员-缺勤记录8.系统管理员-宿舍管理员管理9.系统管理员-学生管理10.系统管理员-宿舍楼管理11.系统…

5大趋势与10大应用场景!未来的智能工厂要这么建...

在经济下行压力、人口红利消失、消费结构升级、疫情冲击等多种因素推动下&#xff0c;制造企业加快转型步伐&#xff0c;工厂正向高效化、智能化、绿色化方向跃迁升级&#xff0c;不断涌现出技术创新、应用领先、成效显著的智能工厂。 近日&#xff0c;中国信息通信研究院发布…