本地
PostgreSQL 光要让它跑起来就挺麻烦的,Mac 上很方便,就 brew install postgresql
,然后 initdb /usr/local/var/postgres -E utf8
初始化数据库。
我在 ~/.zshrc
里面设置了两个 alias 快速启动停止:
1 | alias pgstart="pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start" |
还有个非常好用的命令行工具 pgcli,有自动补全命令功能。
brew services
也能设置开机启动和手动启动停止。
Mac 上有个坑就是 PostgreSQL 版本不同需要迁移数据,这个好解决,随便 Google 下就行了。
VPS
安装 创建用户 密码
debian 的 VPS 上直接 sudo apt-get install postgresql
就行了,我也不知道为什么刚开始我这么装了之后,安装成功,但是根本没启动起来,最后也不知道怎么搞的就又好了。
安装好了之后切到 Linux 的 postgres 用户下,创建一个新用户,设置密码
1 | sudo su postgres |
启动 停止 重启
1 | /etc/init.d/postgresql start |
远程连接
1 | sudo vi /etc/postgres/9.5/main/postgresql.conf |
然后重启一下就能远程连接了。
创建数据库、表 连接 导出 导入
创建数据库
前面已经建了 chen
这个用户,直接在这个用户的 shell 下面新建或者删除数据库:
1 | createdb spending-vis |
或者在 pgcli 里面操作,直接在 shell 里面输入 pgcli
会默认用当前 Linux 的用户名,作为用户名和数据库名称去连接,所以在前面新建用户的时候就要在 postgres
用户下把 chen
这个数据库也创建好。
1 | create database "spending-vis" |
命令都有自动补全,很方便。
创建表
创建一个 entry 表,id 字增主键:
1 | CREATE TABLE entry(id serial PRIMARY Key, categoryid INTEGER, date DATE, year INTEGER, month INTEGER, day INTEGER, amount INTEGER, note VARCHAR) |
连接
1 | psql |
导出 导入
导出:
1 | pg_dump -f spending-vis-postgresql.sql spending-vis |
导入:
1 | psql -d spending-vis -f export-postgresql/spending-vis-postgresql.sql |
本地机器导出之后要导入到 VPS 上,本地用户名为 Chen
,VPS 上是 chen
,要在 .sql
里面改一下,VPS 要先建好数据库,然后导入。
还有个坑就是导入的语句,数据库里面有个字段是能够为空的,导入的时候就报错了,没办法,我只能把那个字段写成了 无备注
,然后就能导入了。
postgrest
postgrest 这个工具挺好,把现有的 PostgreSQL 数据库直接变成一个 RESTful API。
1 | ./postgrest postgres://user:password@localhost:5432/spending-vis \ |
直接就能 GET 获得 JSON
1 | http://localhost:3000/entry |