tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【sqlite】sqlite3をサクっと使ってみるメモ

はじめに

sqliteはローカルでちょっとアプリを動かしてみるとき、
さくらVPSなんかでちょっとしたアプリを作るときなんかは結構使えます。

rubyphpperlでアプリ作ったけどdb作るのめんどいなーってときには便利ですね!
macvpsも結構標準でsqliteが入ってることが多いのも良いです。

というわけでサクと使うメモ

アジェダ

  1. いきなり使ってみる(dbとtable作成)
  2. データ入れて表示してみる(insertとselect)
  3. データのimport
  4. .(ドット)コマンド簡易リファレンス

1. いきなり使ってみる(dbとtable作成)

いきなりですが、sqliteは1データベース1ファイルです。
※ 下記のコマンド実行を見てみるとわかりやすいです

なのでsqlite3コマンドに続けてデータベースファイルを指定します。
これはまだなくても作ってくれるのでとりあえず適当な名前でやってみましょう。

今回はsample.dbという名前にしました。

※ sample.dbファイル(データベース)を指定して接続
$ sqlite3 sample.db
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.

※ 抜けるときは`.q`とうつ
sqlite>  .q

$ 
dbとtableつくる

dbファイルは上述の通り指定するのですが、
tableを作成したりなにかしらしないとファイルは勝手に作ってくれません。

なのでこんなかんじのcreate文でtable作成と同時にdbファイルを試しに作ってみます。

CREATE TABLE sample_table (
id int primary key,
name text not null default '',
description text not null default ''
);

やってみる
※ 試すようのディレクトリ作成&移動
$ mkdir ~/tmp
$ cd ~/tmp

※ dbファイル指定してアクセス(ファイルはまだない
$ sqlite3 sample.db

※ table作成
sqlite>CREATE TABLE sample_table (
   ...> id int primary key,
   ...> name text not null default '',
   ...> description text not null default ''
   ...> );

※ table確認
sqlite> .table
sample_table

※ 抜ける
sqlite> .q

※ ファイルできたか見てみる
$ ls -l
-rw-r--r--  1 hoge  hoge  12288  7  5 19:42 sample.db

2. データ入れて表示してみる(insertとselect)

データをいれるのも簡単で、mysqlやほかのsql文とたいして変わりません。

insertはこんなかんじ

insert into table名 (列1, 列2, ...) values (値1, 値2, ....);

insert&selectしてみる
$ cd ~/tmp
$ sqlite3 sample.db

※ insertしてみる
sqlite> insert into sample_table (id, name, description) values (1, 'hoge', 'hogeだよ');

※ selectしてみる
sqlite> select * from sample_table;
1|hoge|hogeだよ

簡単ですね

3. データのimport

流れとしてはいきなり飛んだ感がありますが、importの方法です。
実際に使ってみる(プログラムからアクセスしてみる)なんかの場合は
データを入れるのが面倒なんですよね。

インポートには.importコマンドを使います。またデータはcsv形式で作ります。

.import インポートファイルのパス table名

※ csvデータ作る
$ cd ~/tmp
$ vi sample_table.csv
---- vi作成 ----
2,'piyo','piyoだよ'
3,'fuga','fugaだよ'
4,'momo','momoだよ'
---------------

※ sqliteに接続
$ sqlite3 sample.db

※ おもむろにインポート
sqlite> .import /Users/hoge/tmp/sample_table.csv sample_table

※ selectしてみる
sqlite> select * from sample_table
1,hoge,hogeだよ
2,'piyo','piyoだよ'
3,'fuga','fugaだよ'
4,'momo','momoだよ'
importがエラーになる場合

こんなかんじでエラーが出る場合は下記リンクを参考にしてみてください。

/Users/hoge/tmp/sample_table.csv:1: expected 3 columns but found 1 - filling the rest with NULL

【sqlite】sqliteでexpected 3 columns but found 1 - filling the rest with NULLなエラーがでる

4. .(ドット)コマンド簡易リファレンス

ここまでやってみるともうわかるかと思いますが、
sqlite.(ドット)からはじまるコマンドが用意されてます。
なのでその簡易リファレンス

コマンド 説明
.table テーブルの一覧表示
.schema テーブル定義(create文)を表示
.show 設定を表示
.header テーブル一覧のヘッダのON/OFを設定
.separator 区切り文字を変更
.mode select文などの出力モードを変更
.indices インデックスの一覧表示
.width データ表示時の幅の設定
.backup データベースをバックアップ
.dump データベースをdump
.restore リストア
.import ファイルからのimport

おわり

サクっと使えて便利なsqliteについてでしたー!