文系seの備忘録

Excelの改行でひたすらスペースを打っていた機械音痴の文系seが日々の備忘録を綴る。

postgreSQLを使ってみよう

postgreSQLを使ってみようの巻。


postgreSQLとは?
- データベース管理システムの1つ。
- タダで使える。
- ネットに情報が沢山あるので勉強するのにいい
- SQL文法が充実

※ セットアップは省略




1.サービスの起動
# service postgresql start


2.ユーザの変更
postgreSQLのDBスーパーユーザであるpostgresユーザで操作する必要があるため。
# su - postgres


3.ユーザーの作成
※ スーパーユーザー以外にもDBを作成できるユーザーを作成する
-bash-3.1$ createuser testuser1
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n


4.DB作成
4-1.一度「su- postgres」を終わってrootに戻るためexitコマンド実行
-bash-3.1$ exit
[root @server1 ~]# su - testuser1
Linux 上のアカウントと PostgreSQL のアカウントが一致しないとエラーになるため

4-2.作成したユーザーでログインし直してDB作成
[testuser1 @server1 ~]$ createdb testdb1
CREATE DATABASE

4-3.作成したDBの確認
[testuser1 @server1 ~]$ psql -l


5.DBへの接続
[testuser1 @server1 ~]$ psql testdb1


6.テーブルの作成
6-1.作成前に現状のテーブル一覧を確認しておく
# \dt
リレーションがありません。 ←まだデーブルがないのでこう表示される
※ 「メタコマンド」といい、psglでDB接続後に実行可能な特有のコマンド。
6-2.テーブル作成
testdb1=> create table tbl1 (
testdb1(> id int primary key,
testdb1(> name varchar,
testdb1(> address varchar,
testdb1(> update timestamp
testdb1(> );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tbl1_pkey" for table "tbl1"
CREATE TABLE
6-3.作成したテーブルの確認
# \dt

7.データの挿入
csvデータのインポート
- 全てのカラムをインポートする場合
COPY tbl1 FROM '/home/service/hoge.csv' WITH CSV
※ WITH CSV: CSVファイルと認識してカンマ区切りのデータとして扱ってくれる
その他、「HEADER : 1行目を無視する」などoptionがあるので適宜追加して実行
- 一部のカラムをインポートする場合
COPY tbl1(id,title,update) FROM '/home/service/hoge.csv' WITH CSV
・行の挿入
INSERT INTO tbl1 VALUES (1, 'Cheese', 9.99);
※ 一度に大量のデータを挿入する場合はcopyコマンドを使うのが効率的。
本作業ではダミーデータをロードするためcopyを使用する。


8.ダン
$ pg_dump データベース名 > バックアップファイル名
pg_dumpの実体がある場所をフルパスで指定しないとpostgreとpg_dumpのバージョンが違うというエラーが出る
確かバージョン差異を無視するオプションあったはず。それをつければエラーでないかも


9.リストア
$ psql データベース名 < バックアップファイル名




【参考】
CentOSPostgreSQL を使ってみよう!(2)
http://lets.postgresql.jp/documents/tutorial/centos/2
postgreSQL基本操作
http://www.marronkun.net/linux/other/database_000014.html
PostgreSQL 9.3.2文書 COPY
https://www.postgresql.jp/document/9.3/html/sql-copy.html
・PostgresSQLのbackup, restore方法まとめ
http://qiita.com/rice_american/items/ceae28dad13c3977e3a8