PostgreSQL命令行使用手册

启动pgsl数据库

1
pg_ctl -D /xx/pgdata start

查看pgsl版本

1
pg_ctl --version

命令行登录数据库

1
psql -U username -d dbname -h hostip -p port

列出所有数据库

1
\l

切换数据库

1
\c dbname

列出当前数据库的所有表

1
\d

查看指定表的所有字段

1
\d tablename

查看指定表的所有字段

查看指定表的基本情况

1
\d+ tablename

查看指定表的基本情况

退出操作

1
q

新建表

例1(主键)

1
2
3
4
5
6
create table TESTCASE(
id INTEGER,
task_class INTEGER,
age TEXT,
PRIMARY KEY(id, task_class)
);

例2(自增SERIAL

1
2
3
4
5
create table CREATETASK_CHKID_N(
id SERIAL PRIMARY KEY,
chk_id TEXT,
n INTEGER
);

其中SERIAL代表自增,默认从1开始增加,每次自增1

删除表

1
drop table REL_CROSS_NODE;

清空表

1
delete from [表名]

添加字段

1
alter table [表名] add column [字段名] [类型];

更改字段

1
alter table [表名] rename column [旧字段名] to [新字段名];

例:把表table_ex字段col_1限制非空去掉:ALTER TABLE table_eg ALTER col_1 drop not NULL

  • 更改字段属性,含空格

如果把字段colname把属性Text转化为int,原来text里面存在空啥的,可以

1
ALTER TABLE tablename ALTER COLUMN colname TYPE int USING (trim(keyword)::integer);

删除字段

1
alter table [表名] drop column [字段名];

表中插入一行数据

1
insert into [表名] (字段1,字段2) values (值1,值2);

例如:

1
insert into assist_info (id, maat_id, block_type) values ('F006', 'F7775', 1)

注:如果表中字段有大写的字段,则需要对应的加上双引号。例:

1
insert into test (no, "Name") values ('123', 'jihite');

值用单引号引起来(‘’),不能用双引号(””)

表中删除一行数据

1
delete from [表名] where [该行特征];

修改表中数据

1
update [表名] set [目标字段名]=[目标值] where [该行特征]

删除表

1
drop table [表名];

退出postgreSql

1
\q

两个查询结果做差except

1
2
3
4
5
(select node_id from node where node_id=1 or node_id=2) except (select node_id from node where node_id=1);
node_id
---------
2
(1 row)

复制表

1
CREATE TABLE test_a_copy AS SELECT * FROM test_a;

命令导入sql数据文件

1
psql -h localhost -d databaseName -U username -f filename

查询结果存储到输出文件

格式:

1
\o file_path

这样就会把查询结果存储到输出文件中。例

1
2
3
postgres=> \o /home/jihite/data/iu_data;
postgres=> select test_id from cdb_all_iu_data limit 10;
postgres=> select test_id from cdb_all_iu_data limit 5;

结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
test_id
--------------
2143
2153
2144
2156
2145
2154
2146
2157
2147
2155
(10 rows)
test_id
--------------
2143
2153
2144
2156
2145
(5 rows)

数据库的备份&恢复

导出到线下文件

1
pg_dump --host hostname --port port --username username -t tablename -d dbname >/home/jihite/table.sql

把线下文件导入到数据库

1
psql -h 10.125.7.68 -p 5432 -d postgres -U postgres -W postgres -f 2.sql

\x 打开扩展显示功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
postgres=> \x
Expanded display is on.
postgres=> select * from cdb_chk_items where chk_id = 'R000000335';
-[ RECORD 1 ]+------------------------------------------------------------------------------------------------
chk_id | R000000335
chk_desc | 道路属性与道路属性相关检查
chk_info | {"FIELDS": {"TRAFFIC_SIGN": ["TYPE", "GEOM"], "ROAD_LINK": ["ROAD_CLASS", "FORM_WAY", "GEOM"]}}
err_desc | {"ERR2": "roadclass取值错误", "ERR1": "formway取值错误"}
chk_level | 1
is_opened | 1
module_name | TRAFFIC_SIGN
invalid_flag | 1
rel_mode | MAIN_LAYER:TRAFFIC_SIGN
: TRAFFIC_SIGN|A,M|DIRECT
: ROAD_LINK|A,M,D|ATTR_REL

从表A中把符合条件的记录拷贝到表B

1
insert into A select * from B where id in ('a', 'b', 'c');



转载自jihite博客:http://www.cnblogs.com/kaituorensheng/p/4667160.html

文章目录
  1. 1. 启动pgsl数据库
  2. 2. 查看pgsl版本
  3. 3. 命令行登录数据库
  4. 4. 列出所有数据库
  5. 5. 切换数据库
  6. 6. 列出当前数据库的所有表
  7. 7. 查看指定表的所有字段
  8. 8. 查看指定表的基本情况
  9. 9. 退出操作
  10. 10. 新建表
    1. 10.1. 例1(主键)
    2. 10.2. 例2(自增SERIAL)
  11. 11. 删除表
  12. 12. 清空表
  13. 13. 添加字段
  14. 14. 更改字段
  15. 15. 删除字段
  16. 16. 表中插入一行数据
  17. 17. 表中删除一行数据
  18. 18. 修改表中数据
  19. 19. 删除表
  20. 20. 退出postgreSql
  21. 21. 两个查询结果做差except
  22. 22. 复制表
  23. 23. 命令导入sql数据文件
  24. 24. 查询结果存储到输出文件
  25. 25. 数据库的备份&恢复
  26. 26. \x 打开扩展显示功能
  27. 27. 从表A中把符合条件的记录拷贝到表B