sqliteのデータベースファイルのdumpを比較するrubyスクリプト

sqliteを使ったサービスの開発や運用をしていると、ときどきデータベースファイル同士を比較したくなることがあります。そのためには、sqlite3コマンドを使用してデータベースファイルのダンプを作成し、それらを比較すればよいのですが、探してもそういうツールが見つからなかったのでrubyで書いてみました。

require 'tempfile'

if ARGV.size != 2
	puts("usage: ruby diffdb.rb FILE1 FILE2")
	exit
end

ARGV.each do |path|
	abort "#{path} not found." unless File.exist?(path)
end

Tempfile.open("diffdb") do |file|
	file.close
	system("sqlite3 #{ARGV[0]} .dump > #{file.path}")
	system("sqlite3 #{ARGV[1]} .dump | diff #{file.path} -")
end

sqlite3コマンドとdiffコマンドを内部で使っています。

ruby diffdb.rb hoge.db piyo.db

とすると比較結果が表示されます。こういう機能ってsqlite3コマンドに付いててもいいかも。