データベースについて勉強(準備編)

あまりデータベースになじみがないままデータベースをORラッパー経由で触っていたが、ORマッパーで分かってないのかデータベースで分かってないのか分からないのはよろしくない。ということで軽くデータベースについて勉強することにした。以下の本を購入。書籍はPostgreSQLが例だけど、仕事だとMySQLを使うので、できるだけMySQLでやってみる。

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

余談だけど、研究していたときはテキストファイルのみ使うことがほとんどで、データベースはほぼ使っていなかった。

データベース、テーブルの準備

専用のデータベースの作成。名前は適当。

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>            |                             |
+----------------+-----------+--------+-------+-------------------+-----------------------------+