読者です 読者をやめる 読者になる 読者になる

後楽園でマーケティングを研究する学生のブログ

マーケティング、KPI管理、グロースハック、ときどきPRML

データベースを構築しよう〜PostgreSQL編〜

データコンペ用のデータベースをPostogreSQLで構築しました。 データ型さえきちんと頭に入れれば簡単に作れました。

作成手順

手順

  1. データベース作成
  2. テーブル作成
  3. データの挿入

今回のゴール

今回はレシートのデータを表にしてみます。 二行目の日本語は補足説明です。実際にはありません。 データベース名はposdata、表の名前はordersとします。

order_id product_id order_price order_amount order_date
レシート番号 商品番号 販売価格 購入量 購入時間
00001 101010 3000 1 2016/3/17 21:08
00002 202020 1000 2 2016/3/17 22:00
00002 303030 2000 1 2016/3/17 22:00
00003 123456 4000 2 2016/3/17 22:30
00004 223456 5000 1 2016/3/17 22:40

基本DB操作

まず表を入れる箱を用意します。 データベース作成

CREATE DATEBASE データベース名;

CREATE DATEBASE posdata;

これで表を入れる箱ができました。 次にテーブルのアウトラインを先に作ります。

テーブル作成

CREATE TABLE テーブル名 (カラム名 データ型,カラム名 データ型,カラム名 データ型,・・・);

CREATE TABLE テーブル名 (order_id text,product_id text,order_price integer,order_amount integer,order_date timestamp with time zone);

こんな感じの表のアウトラインができます。

order_id product_id order_price order_amount order_date
レシート番号 商品番号 販売価格 購入量 購入時間
text text integer integer timestamp with time zone

下の二行は説明のためにあります。実際には一行目しかありません。

最後に中身(データ)を入れていきます。 今回は、CSVファイルからデータを挿入するのですが、PostgreSQL特有のCOPY文を使ってます。

copy テーブル名 from 読み込むCSVの絶対パス;

copy orders from ’ORDER.csv’ WITH(encoding ’SJIS’,format csv,header true);
# with以降は csvのエンコードがshift-jisかつcsvにヘッダーがあったためつけてるオプションになります。

完成ー

order_id product_id order_price order_amount order_date
00001 101010 3000 1 2016/3/17 21:08
00002 202020 1000 2 2016/3/17 22:00
00002 303030 2000 1 2016/3/17 22:00
00003 123456 4000 2 2016/3/17 22:30
00004 223456 5000 1 2016/3/17 22:40

補足

データ型の変更

データ型の設定をミスって値が挿入できない場合は下のコマンドでデータ型を変えることできます。

ALTER TABLE テーブル名 ALTER COLUMN カラム名 TYPE 変更したいデータ型

データ型もっと知りたい!

データ型について知りたい方はこちらのリンクを参照してください。

データ型