はじめに
WSL2 の Ubuntu 20.04 LTS で SQLite を使ってみた備忘録を残しておく。目的としてはこちらの記事でデータ生成して、こちらの記事でcsvを作成したファイルをDBに登録し、データをいろいろと操作してみた。
DBに触るのは初めてなので、何か間違いやコメントありましたらどしどしお願いします!
インストール
SQLite3 をインストールして、そのバージョンを確認した。
sudo apt update
sudo apt install sqlite3
sqlite3 --version
最後のコマンド実行時にバージョンが表示される。
3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837balt1
問題なくインストールできているよう。
DB の作成
まず、DBファイルを作成する。
sqlite3 sample.db
SQLite のコンソールが立ち上がるので以下のコマンドを入力。
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> .open sample.db
これでsample.dbが作られる。
DB へ csv のインポート
カレントディレクトリにある data.csv をDBにインポートする。
sqlite> .mode csv
sqlite> .import data.csv data
これで DB 内に data というテーブルができた。
データの確認
格納されてるデータを確認する。
sqlite> .table
data
sqlite> select * from data;
1,female,154.208284956131,47.9648481600305,O
2,male,177.885610334895,70.8362056783686,A
3,male,163.380282640745,48.2489691006596,A
--中略--
998,male,169.940812644638,75.6647407081827,O
999,female,148.482217278304,39.0562603398636,O
1000,male,176.658033371611,86.1710695602122,B
データが格納されてることは確認できた。テーブルの要素一覧を取得してみると、
sqlite> .schema
CREATE TABLE data(
"" TEXT,
"SEX" TEXT,
"HEIGHT" TEXT,
"WEIGHT" TEXT,
"BLOOD" TEXT
);
となり全部のデータ型がTEXTになってしまっていた。これを変更したい。
#データ型の変更
いろいろ調べてみた結果、SQLite でデータ型を直接変更する方法は無い。なので、SQliteでカラム定義変更(カラム名変更、属性変更など)を行う最短ルート暫定版を参考に、新しいテーブルを作り、そこにデータを移すという方法で実行する。新しいテーブルを作るには、
sqlite> create table tmp(
...> id integer,
...> SEX text,
...> HEIGHT real,
...> WEIGHT real,
...> BLOOD text);
と項目名とデータ型を指定する。次にテーブルをコピーする。
sqlite> insert into tmp select * from data;
これでコピーできたので、元データを消す。
sqlite> drop table data;
テーブル名を変更してテーブルの中身を確認する。
sqlite> alter table tmp rename to data;
sqlite> .schema
CREATE TABLE IF NOT EXISTS "data"(
id integer,
SEX text,
HEIGHT real,
WEIGHT real,
BLOOD text);
sqlite> select * from data;
1|female|154.208284956131|47.9648481600305|O
2|male|177.885610334895|70.8362056783686|A
3|male|163.380282640745|48.2489691006596|A
--中略--
998|male|169.940812644638|75.6647407081827|O
999|female|148.482217278304|39.0562603398636|O
1000|male|176.658033371611|86.1710695602122|B
変更ができている。
おわりに
次はテーブル内の項目を条件を付けて取り出す、などの細かい操作方法も学んでいきたい。