# 使用PostgreSQL

## 使用PostgreSQL

下載頁面:<http://www.enterprisedb.com/products-services-training/pgdownload>

## 目前建議用 docker 快速架設

使用 docker-compose.yml

> 一樣要建立 volumn 避免重啟後資料消失

```
# Use postgres/example user/password credentials
version: '3.1'

services:

  db:
    image: postgres
    restart: always
    volumes:
      - "./dbdata:/var/lib/postgresql/data"
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: superuser
      POSTGRES_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
```

<https://hub.docker.com/_/postgres>

## 安裝

<https://www.godaddy.com/garage/how-to-install-postgresql-on-ubuntu-14-04/>

```
1.下載
apt-get install postgresql postgresql-contrib

2.然後設定開機自動啟動
sudo update-rc.d postgresql enable

3.啟動postgresql
sudo service postgresql start
```

之後輸入以下進入postgres使用者

```
sudo -u postgres -i
```

進入psql

```
psql
```

更改預設密碼，進入psql後輸入以下

```
\password postgres
```

### Mac安裝

```
brew install postgres
pg_ctl -D /usr/local/var/postgres start
createdb mydb
psql mydb // 進入DB
```

<https://medium.com/@Umesh_Kafle/postgresql-and-postgis-installation-in-mac-os-87fa98a6814d>

### 1.使用pgAdmin

<https://www.pgadmin.org/download/>

一個可視化的網頁瀏覽工具

> 如果使用本地連線時輸入localhost比較好，因為有時127.0.0.1無作用
>
> 如果出現can't connect application server，重新啟動一次即可。

**如要查看TABLE**

```
點選數據庫=>架構=>數據表
```

**如要查看row**

```
點選數據表下的table名稱，在點選最上方工具(T)下面的表格圖案
```

**執行SQL**

點選 Tools 然後按 Query Tool

### PgAdmin連線遠端主機的DB

1.設定pg\_hba.conf

```
sudo vim /etc/postgresql/9.5/main/pg_hba.conf

然後加入以下

host all all 0.0.0.0/0  md5
```

> 分別為DB, User, IP 與方法

2.設定postgresql.conf

```
listen_addresses = '*'
```

3.重啟：

```
sudo service postgresql restart
```

4.開啟遠端主機防火牆，port：5432

然後即可使用PgAdmin遠端連線。

可參考：<https://cloud.google.com/community/tutorials/setting-up-postgres>

### 2.使用SQL shell ( psql )

> 輸入psql <資料庫名稱>

```
記得每個指令結尾要加 ;
使用 \q 離開。
```

```
指令類似於 MySQL 的 SQL 指令
```

## 使用Log

> 預設只會存在psql 操作的log

log路徑：`/var/log/postgresql/postgresql-10-main.log`

1.首先要設定config: `/etc/postgresql/10/main/postgresql.conf`

2\.

```
- change the log_statement setting to 'all'.
- turned on the log_destination
- turn on the logging_collector
```

3.重啟config

```
進入psql後輸入
SELECT pg_reload_conf();
```

參考至:

<http://www.postgresql.org/docs/8.3/static/tutorial-table.html>

中文版:

<http://twpug.net/docs/postgresql-doc-8.0-zh_TW/tutorial-populate.html>
