MathJax

MathJax-2

MathJax-3

Google Code Prettify

置頂入手筆記

EnterproseDB Quickstart — 快速入門筆記

由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:

2016年11月16日 星期三

檢視當前的 PostgreSQL Log 的偷懶 Script

每次要一直找新的 PostgreSQL Log 檔名有點麻煩,在這裡作個很簡單的紀錄 ...
把下面這個 Shell Script 的資訊 PGUSER(登入帳號)、PGDATA(資料目錄)、PGDATABASE(登入的資料庫)然後執行,可以比較簡單的找出 Log 檔查看。
#!/bin/bash


PGUSER=enterprisedb
PGDATA=/opt/PostgresPlus/9.5AS/data
PGDATABASE=edb


LATEST_LOG="SELECT pg_ls_dir
 FROM pg_ls_dir('pg_log')
 ORDER BY (pg_stat_file('pg_log/' || pg_ls_dir)).modification DESC
 LIMIT 1;"


CURRENT_PGLOG_FILE=(`psql -U PGUSER -d "${PGDATABASE}" -c "${LATEST_LOG}" --tuples-only`)


tail -f $PGDATA/pg_log/$CURRENT_PGLOG_FILE

顯然,這個 Script 只有在資料庫有在運作的時候才有用處,資料庫要是是關掉的,這就派不上用場了。當然也可以把 Script 的 LATEST_LOG 變數換成在 Shell 裡面列舉最新的 Log 檔案就好了。

參考資料:


2016年11月10日 星期四

同一個 Postgres Cluster 的不同資料庫之間的資料怎麼溝通?

在同一個 PostgreSQL Instance(或稱作一個 PostgreSQL Cluster)裡面,不同的 Database 間要交換資料,這看起來是個小小問題,但其實只能走連線交換資料的方式,沒有想像中的直覺。

PostgreSQL 提供以下兩種方式進行:
1. 用 Postgres_FDW 存取外部表
2. 用 DBLink 連到其他資料庫

其中的 postgres_fdw 在最近發展功能越來越豐富,因此一般建議使用 Postgres_FDW 去進行不同 Database 之間,資料的交換。

以下簡單示範在 EDB 公司的 PostgreSQL 9.5 企業版中使用 postgres_fdw 進行存取。
來源的 database 是 edb,以及裡面的範例資料 Schema;然後在另外一個 database,postgres 建立外部表。


以下即操作步驟

2016年11月7日 星期一

練習 - 用 pgAgent 定時透過 foreign data wrapper 拉資料

有時會希望透過 PostgreSQL 拉資料來進行分析,來減輕工作中資料庫的負擔。這一般是利用所謂 ETL 工具定時拉資料達成。不過由於 PostgreSQL 本身就有排程工具的專案,而且在近幾版本的 PostgreSQL9.x 能夠外接資料,因此用此來試試看。

pgAgent 是一個 PostgreSQL 的排程作業工具,而 Foreign Data Wrapper 是 PostgreSQL 的外部資料源存取架構。這兩樣搭起來,加上在 9.5 版引入的UPSERT 功能:INSERT ... ON CONFLICT ... ,就能達成跨資料庫進行資料更新/同步的作業雛型。

以下雛型的練習,方便起見,將從同一個 PostgreSQL Instance 的兩個 Database 之間用 Foreign Data Wrapper 更新資料