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コマンドに付いててもいいかも。