导出数据到sql文件:
pg_dump -U postgres -d mydatabase > dump.sql
从sql文件导入数据:
psql -d newdatabase -U postgres -f dump.sql
执行sql文件:
在相应的数据库中 \i sql文件 (这个如果是在windows下,要将\改为/)
在shell中 psql -s 数据库名 -f sql文件
下面这个是基本sql的
从一个表中查询数据,将结果插入到另一个表中:
insert into temptable select id from product where category_id=3;
create table temptest as select id from product where category_id=3;
以上两行都是从product表中找到category_id为3的记录的id号,然后将id号插入到temptable中。不同的时第一行的sql语句
要求数据库中必须已经存在temptable表,此时temptable表可以不知有id这一个字段,只不过插入数据之后其他字段为空;第二行的sql语
句不要求数据库已经存在temptable表,它会创建这个表,然后将数据插入,此时temptable表中只有id一个字段
创建用户:CREATE USER username WITH PASSWORD 'password'
这就创建了一个具有所有权限的普通用户
创建超级用户:CREATE ROLE name SUPERUSER(这个角色是不能登录的)
用户登录:psql -h IP地址 -p 端口号 -U 用户名 默认数据库
其中-h IP地址, -p 端口号可以省略;默认IP地址localhost,默认端口号是5432。默认的数据库好像不能够省略,省略之后PostgreSQL会自动使用名字为用户名的数据库作为默认数据库,如果这个数据库不存在就会报错。
在PostgreSQL中,创建用户:CREATE USER name [ [ WITH ] option [ ... ] ] [ WITH ] { ENCRYPTED | UNENCRYPTED } PASSWORD ‘password’[ [ WITH ] option [ ... ] ]
其中Option可以是:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| CONNECTION LIMIT connlimit
| VALID UNTIL ’timestamp’
一个创建用户的例子:
CREATE USER testuser WITH CREATEDB PASSWORD '123456'
以上的语句创建了一个名字为testuser,密码为123456,具有创建数据库权限的用户
修改用户属性的方法是:ALTER USER name [ [ WITH ] option [ ... ] ]
其中option可以是:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| CONNECTION LIMIT connlimit
| { ENCRYPTED | UNENCRYPTED } PASSWORD ’password’
| VALID UNTIL ’timestamp’
一个修改用户的例子是:
ALTER USER testuser WITH CREATEROLE
上面的语句就给testuser这个用户加上了创建角色的权限
删除用户:DROP USER [ IF EXISTS ] name [, ...]
角色可以理解为用户。不同的地方是用户创建时默认是带有登录权限的,而角色没有,所有如果创建了一个角色没有给显式地赋予LOGIN 权限,这个角色相当于是不能用的,因为不能登录。创建角色:CREATE ROLE name
一个创建角色的例子:
CREATE ROLE testrole LOGIN
创建了一个具有登录权限的角色
另外创建角色的时候也可以加上创建用户时的option
阅读(1846) | 评论(0) | 转发(0) |