postgres 常用命令速查
李二花 / 2020-08-10
分类: postgres / 标签: postgres / 字数: 578
关键词:ubuntu
, postgres
数据库和表相关
登录数据库:
PGPASSWORD='password' psql -h host_addr -U dbp_lierhua -d 'database_name' -p 5438
导出指定数据库的全部表 schema:
pg_dump -h host_addr -p 5438 -U dbp_lierhua database_name -s -n yay > result.sql
-t 后面跟表名字,没有 -t 的话,直接跟数据库名字即可, -n 指定对应的 schema 的名字, -s 选项用来只导出表结构,而不会导出表中的数据
导出指定表的 schema 和所有数据:
pg_dump -h host_addr -p 5438 -U dbp_lierhua yay.table_name -t database_name > result.sql
-t 后面跟表名字,没有 -t 的话,直接跟数据库名字即可, -n 指定对应的 schema 的名字, -s 选项用来只导出表结构,而不会导出表中的数据
pg_dump -h pg-market-mm.db.vip.p2staff.com -p 5438 -U dbp_lierhua putong-mm -t rta_new > rta_new.sql
导出指定表的 schema:
pg_dump -h host_addr -p 5438 -U dbp_lierhua -t yay.table_name database_name -s > result.sql
-t 后面跟表名字,没有 -t 的话,直接跟数据库名字即可, -n 指定对应的 schema 的名字, -s 选项用来只导出表结构,而不会导出表中的数据
创建数据库:
CREATE DATABASE "database_name"; -- 记得带双引号
创建 schema 并应用到数据库:
CREATE schema yay
ALTER database "database_name" set search_path to "yay";
释放数据库 schema 到目标库:
PGPASSWORD='你的密码' psql -d database_name -U postgres -h 39.16.18.10(你机器的IP或者域名) -p 5432 -f ~/Desktop/database_name.sql
-d 指定要释放到的数据库
-U 用户名
-h 机器的地址
-p 机器开放的端口,不写默认是 5432
-f 要释放的文件的地址
不导出全表数据,导出部分数据到 CSV:
\COPY (SELECT * FROM table_name where id = '1157692') TO '/home/lierhua/result.test.csv' WITH csv; (postgres 里执行, 因此无需密码)
\COPY (select user_id, change_value, to_char(created, 'DD-MM-YYYY') from coin_history) TO '/mnt/data/new/result.csv' WITH (FORMAT CSV, HEADER);
导出的部分表数据释放到其他库的表里:
\COPY ads_material FROM '~/Desktop/ads_material.test.csv' WITH csv; (postgre 里执行,因此无需密码)
\COPY 目标数据表 from 'csv 地址' with csv;
查询命令相关
array 查询:
select * from table_name where files @> array['https://lalala.com/v1/raw/5fa29ae1-949a-4b74-aa72-99ef78c5506907.mp4']::varchar[] limit 1;
select * from table_name where app_name @> array['name']::text[] limit 5;