あまりデータベースになじみがないままデータベースをORラッパー経由で触っていたが、ORマッパーで分かってないのかデータベースで分かってないのか分からないのはよろしくない。ということで軽くデータベースについて勉強することにした。以下の本を購入。書籍はPostgreSQLが例だけど、仕事だとMySQLを使うので、できるだけMySQLでやってみる。
10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)
- 作者: 青木峰郎
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/06/30
- メディア: 単行本
- この商品を含むブログ (6件) を見る
CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)
- 作者: ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2010/06/29
- メディア: 大型本
- 購入: 39人 クリック: 484回
- この商品を含むブログ (16件) を見る
余談だけど、研究していたときはテキストファイルのみ使うことがほとんどで、データベースはほぼ使っていなかった。
データベース、テーブルの準備
専用のデータベースの作成。名前は適当。
CREATE DATABASE ten_years;
テーブルの定義。ローカルのファイルを読むときは--local-infile
を付けないといけなかった。
mysql -u root ten_years < src/*.ct mycli -u root --local-infile=1 ten_years
データが入っているファイルの読み込み
MySQLだとこんな感じでやるらしい。
LOAD DATA LOCAL INFILE 'src/access_log.csv' INTO TABLE access_log FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES; LOAD DATA LOCAL INFILE 'src/customers.csv' INTO TABLE customers FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES; LOAD DATA LOCAL INFILE 'src/items.csv' INTO TABLE items FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES; LOAD DATA LOCAL INFILE 'src/order_details.csv' INTO TABLE order_details FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES; LOAD DATA LOCAL INFILE 'src/orders.csv' INTO TABLE orders FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES; LOAD DATA LOCAL INFILE 'src/shops.csv' INTO TABLE shops FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES; LOAD DATA LOCAL INFILE 'src/web_pages.csv' INTO TABLE web_pages FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES;
テーブルの定義を見る。
DESCRIBE access_log; +----------------+-----------+--------+-------+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | |----------------+-----------+--------+-------+-------------------+-----------------------------| | request_time | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | | request_method | text | YES | | <null> | | | request_path | text | YES | | <null> | | | customer_id | int(11) | YES | | <null> | | | search_hit | int(11) | YES | | <null> | | | referer | text | YES | | <null> | | +----------------+-----------+--------+-------+-------------------+-----------------------------+