021234567891011121314151617181920212223242526272829303104

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【 --/--/-- (--) 】 スポンサー広告 | TB(-) | CM(-)

PostgreSQLへのTPC-Hデータのロード... の準備

TPC-Hのロード用データファイルは作成できた。次は実際にテーブルを作ってロードしよう。
まずはPostgreSQLへ作ってみる。
テーブルを作る前に、データベース環境定義的な目的のオブジェクトをたくさんつくらないといけない。
・ユーザー、ロール
・テーブル空間
・データベース
・スキーマ

仕事で使うようなデータベースの場合は、この辺の定義がかなり重要なのだろうけど、とりあえず作ってみるチュートリアルでは、まずは動く事を優先して、細かい設定は適当に...


PostgreSQLへのユーザー、ロールの作成



ログイン用のデータベースユーザーを作成するには、CREATE ROLEコマンドを使用する。PostgreSQLでは、ログインユーザーはロールのひとつという扱いのようだ。ロールは権限の集合に対する別名かと思ってたけど、PostgreSQLでの扱いは違うようだ。
というか、ロールにパスワードをつけてログイン可能にしたのがユーザー(=ログインロール)という事だろうか。

pgAdminを使ってGUIで操作する場合は、オブジェクトブラウザのログインロールのツリーから右クリックで「新しいログインロール」を選択すると、ユーザー名、パスワードなどをきいてくる。

このpgAdminのいいところは、GUI上で作成したものに対しても、該当するSQLコマンドを表示してくれるということ。(パスワードも人間の眼には判読不可能な形にしてくれる。)

CREATE ROLE postgres LOGIN
ENCRYPTED PASSWORD 'md53175bce1d3201d16594cebf9d7eb3f9d'
SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION;



PostgreSQLへのテーブル空間の作成



テーブルを作成する場所として、テーブル空間というものを指定する必要がある。これはデータベースをインストールしているOSから参照可能なディレクトリを指定すればよいようだ。

仮想マシンに追加マウントした仮想ディスク2本、/data/disk1と/data/disk2を、それぞれts_dataspace1とts_dataspace2として登録する。
pgAdminで見ると登録済みのテーブル空間がpg_で始まってたので、同じようにpg_で始まる名前をつけようと思ったら怒られた。
'The prefix "pg_" is reserved for system tablespaces.' というメッセージが出た。名前付けルールをチェックするとは。pgsqlでもpgAdminでも同じエラーが出せるので、データベースがチェックしてるんだろう。


CREATE TABLESPACE ts_dataspace1
OWNER postgres
LOCATION '/data/disk1';
CREATE TABLESPACE ts_dataspace2
OWNER postgres
LOCATION '/data/disk2';



PostgreSQLへのデータベースの作成



さきほど作成したテーブル空間を使い、データベースを作成する。使用する文字コード、ロケール等が指定できる。必須かどうかわからないけど、いちおう指定しておいた。
データベースとロールは同じ名前である必要はないだろうが、今回は同じにしておいた。


CREATE DATABASE tpch
WITH OWNER = tpch
ENCODING = 'UTF8'
TABLESPACE = ts_dataspace1
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
CONNECTION LIMIT = -1;



PostgreSQLへのスキーマの作成



スキーマというものを作成したデータベースに対し作成してもよかったのだが、デフォルトで同データベースのpublicスキーマが使えるので、それでよしとする。

この辺のデータベース環境定義的なオブジェクト、つまりユーザー・ロール・データベース・スキーマなどについては、まずはテーブルにデータをロードしたいという事であまり調べずに作ったので、あらためて文書を読み直すか。


PostgreSQLへのテーブルの作成



ようやくテーブルが作成できる。
pgAdmin使ってもよいのだが、こういうツールはカラムの定義が面倒で、キーボードとマウスの間を手が行ったり来たりして非常に時間がかかる。
せっかくDDL作ってあるのだから、psqlから直接流して作成することにする。
簡単にできあがった。

下のログはテーブルひとつ分についてのみ。

tpch=> create table SUPPLIER (
tpch(> S_SUPPKEY integer,
tpch(> S_NAME character(25),
tpch(> S_ADDRESS varchar(40),
tpch(> S_NATIONKEY integer,
tpch(> S_PHONE character(15),
tpch(> S_ACCTBAL numeric (20,2),
tpch(> S_COMMENT varchar(101),
tpch(> primary key (S_SUPPKEY)
tpch(> )
tpch-> ;
CREATE TABLE
tpch=>



 
スポンサーサイト
【 2014/03/17 (Mon) 】 データベース PostgreSQL | TB(0) | CM(0)
プロフィール

Ed U Song

Author:Ed U Song
社内ノマドなエンジニア。
仕事で触れる機会のないものを自宅環境作って実験。

スポンサーリンク
最新コメント
最新トラックバック
検索フォーム


                                         
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。