データベースを構築しよう〜PostgreSQL編〜
データコンペ用のデータベースをPostogreSQLで構築しました。 データ型さえきちんと頭に入れれば簡単に作れました。
作成手順
手順
- データベース作成
- テーブル作成
- データの挿入
今回のゴール
今回はレシートのデータを表にしてみます。 二行目の日本語は補足説明です。実際にはありません。 データベース名は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 変更したいデータ型
データ型もっと知りたい!
データ型について知りたい方はこちらのリンクを参照してください。