2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLite 事始め

Posted at

はじめに

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

変更ができている。

おわりに

次はテーブル内の項目を条件を付けて取り出す、などの細かい操作方法も学んでいきたい。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?