ラベル read の投稿を表示しています。 すべての投稿を表示
ラベル read の投稿を表示しています。 すべての投稿を表示

2021年3月21日日曜日

SQLite 3 バッチファイルやシェルスクリプトからSQLを実行する

概要

コマンドプロンプトやbashからSQLiteのDBファイルに対しSQLを実行する方法。

pythonやRubyなどの言語であれば専用のライブラリ等でDBに接続してSQLを実行できるが、 コマンドプロンプトやbashの場合はSQLiteのコマンドラインツール使って実行することになる。

Windowsへのコマンドラインツール導入は以下を参照のこと。
SQLite コマンドラインツール導入手順 (Windows 10)

実行例

sqliteコマンドラインツールの引数にSQLを書くことができる。
パイプラインから渡したり、テキストファイルからのリダイレクトでもOK。

以下はWindowsのコマンドプロンプトからinsert文を実行する例。

普通に引数に指定する

C:\temp>sqlite3 sqlite.db "insert into test_table (id, name) values (001, 'example')"
                
パイプラインから渡す

C:\temp>echo "insert into test_table (id, name) values (001, 'example')" | sqlite3 sqlite.db
                
テキストファイルからリダイレクトする

テキストはUTF-8で作成する


C:\temp>more insert.sql
insert into test_table (id, name) values (001, 'example')

C:\temp>sqlite3 sqlite.db < insert.sql
                

応用

上記の手順であればSQLだけでなく、SQLite コマンドラインツールの各種コマンドを実行出来る。 「.once」コマンドでselectの結果をテキストファイルに出力したり、 「.read」コマンドで複数のSQLファイルを組み合わせて実行することも可能。

また、「%ERRORLEVEL%」や「$?」で終了コードを取得できるので、 実行したSQLやコマンドが失敗したかどうかも確認することができる。
SQLite 3 コマンドラインツールにも終了コードはある

参考URL

2020年10月31日土曜日

SQLite 3 と Vim を使ってSQLを開発する

概要

SQLite3 コマンドラインツールからVimを直接呼び出してSQLを作成し、 コマンドラインツールで実行させる方法。 いちいちツールの起動/終了をする手間が減るし、上下カーソルで履歴を呼び出すのも楽になる。

Vimでなくともメモ帳やTeraPadなどでもよいが、 VimであればCUIからウィンドウを移動しないくてもいいし、 キーボードのみの操作のみで済むため便利。

環境

  • Windows 10 64bit
  • SQLite3 (3.33.0) Command-Line Shell
  • Vim (8.2)

Vimを準備する

Windows にはデフォルトでVimがインストールされていないため準備する。 Googleで検索すればインストール方法はすぐに見つかる。 パスを通してコマンドプロンプト上で起動できるようにしておく。

(Mac osxや大半のLinuxはデフォルトでインストールされているので インストール作業は不要。)

SQLite3 コマンドラインツールからVimを起動する

「.system」もしくは「.shell」コマンドを利用する。

参考「SQLite3 コマンドラインツールのままディレクトリを移動、確認する」


sqlite> .shell vim "./insert.sql" 
                

Vim を終了すればSQLite3 コマンドラインツールに戻る。

Vimで作成したSQLを読み込む

「.read」コマンドを利用する。

参考 「SQLite3 コマンドラインツールからSQLファイルを読み込んで実行する」


sqlite> .read "./insert.sql"
                

transaction、rollbackを適切に使えば、 開発用のデータが溜まることもない。
これで簡易的な開発環境ができたんじゃなかろうか。

参考URL

2020年10月12日月曜日

SQLite 3 コマンドラインツールからSQLファイルを読み込んで実行する

概要

あらかじめSQLやコマンドを記述したテキストファイルを準備しておき、 コマンドラインツールから読み込み・実行することができる。 「.read」コマンドを使う。 テキストデータをテーブルに反映する「.import」とは異なる。

コマンドプロンプトやbashからSQLやコマンドを記述したテキストファイルを実行させたい場合はこちら。
SQLite 3 バッチファイルやシェルスクリプトからSQLを実行する

ヘルプの内容


sqlite> .help .read
.read FILE               Read input from FILE
                

外部のSQLを実行する例

サンプルテーブル(product)
id
primary key
autoincrement
name
not null
quantity
default 0
remark
1 tomato 100
2 potato 120
3 pumpkin 50 (Comment...)

例)データを新規登録して結果を表示

環境
  • Windows 10 64bit
  • SQLite3 (3.33.0) Command-Line Shell
sample01.sql

insert into product
(id, name, quantity, remark)
values 
(4, 'soy', 30, '300g');

select * from product;
                
上記ファイルをSQLiteコマンドラインツールで実行する

sqlite> .read ./sample01.sql
1|tomato|100|
2|potato|120|
3|pumpkin|50|(Comment...)
4|soy|30|300g
                

コマンドも記述できる

「.mode」や 「.print」 といったSQLiteコマンドラインツールのコマンドも記述できる。
また、「--」で始まる行はコメントとして認識され、実行されない。

sample02.sql

-- this is sample script

insert into product
(id, name, quantity, remark)
values 
(4, 'soy', 30, '300g');

.print "inserted 1 item \n"

.mode csv
select * from product;
                
上記ファイルをSQLiteコマンドラインツールで実行する

sqlite> .read ./sample02.sql
inserted 1 item

1,tomato,100,""
2,potato,120,""
3,pumpkin,50,(Comment...)
4,soy,30,300g
                

参考URL