PostgreSQL Practice(1)
- 需求
用官方 API 保存个人微博的 timeline
到数据库,鉴于返回数据是 json
,用支持 json
的 PG 是最方便的
2. 环境
Ubuntu 12.04.3 LTS 3. 安装 PG 9.3
Google postgresql 9.3 ppa
可以看到官方 wiki 有详细说明
1 -- 添加 apt 源
2 sudo add-apt-repository ppa:pitti/postgresql
3 sudo apt-get update
4 sudo apt-get upgrade
5 sudo apt-get install postgresql-9.3 pgadmin3
6 sudo apt-get install postgresql-server-dev-9.3
7
8 -- 其他信息
9 -- deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main
10 -- 单独添加签名
11 wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- SUPER 用户 管理
通过 APT 安装后,默认用户是 postgres
1 -- 切换到用户 postgres
2 sudo su - postgres
3
4 -- 添加数据库
5 createdb sample
6
7 -- 用 SUPER 角色登录
8 psql
- 数据库与用户权限
1 -- 创建新用户 授予数据库权限
2 create user yoyo with password 'ppass';
3 grant all privileges on database sample to yoyo;
- 表、RULE
初期只需要维护一个只读,主键唯一的表
1 -- 建表
2 create table weibo_user (
3 id bigserial PRIMARY KEY,
4 screen_name varchar(30),
5 name varchar(30),
6 user_json json
7 );
在有主键约束的情况下,如果在不检查是否有重复的情况下需要忽略主键冲突的行,在 MySQL
可以通过 insert ignore into
但是 pg
不支持,但是可以通过为表新建一个 rule 来忽略冲突行
1 drop rule if exists "rule_insertignore_weibo_user" on "weibo_user";
2 create rule "rule_insertignore_weibo_user" as on INSERT TO "weibo_user"
3 where exists(select 1 from weibo_user
4 where uid=NEW.uid and id=NEW.id)
5 do instead nothing;
- 好了,用
pg
保存一段时间的数据再对其处理
blog comments powered by Disqus