RubyでSQLiteのカラム名の変更をする方法
SQLiteでカラム名の変更をする方法 - Hacking My Way 〜 itogのhack日記ではdbファイルのサイズが大きくなってしまったので、Rubyで別のdbファイルを作ってコピーすることにした。
コードは以下の通り。
#!/usr/local/bin/ruby -Ku require 'rubygems' require 'sqlite3' db_org = SQLite3::Database.new("org.sqlite") db_new = SQLite3::Database.new("new.sqlite") sql = <<SQL CREATE TABLE "table_name" ("col_a" TEXT , "col_b" TEXT); SQL db_new.execute(sql) begin sql = "SELECT * FROM table_name" db_org.execute(sql) {|col_a, col_b| new_item = {:col_a => col_a, :col_b => col_b} sql = "INSERT INTO table_name VALUES (:col_a, :col_b)" db_new.execute(sql, new_item) } rescue => e puts e.message end db_org.close db_new.close
カラム名の変更に限らず、あるDBを元にして違うDBを作る場合はcreate tableとinsertの処理を変えるだけでできるので、こっちの方が便利。新しいDBをつくってるので、ゴミが残ってサイズがでかくなるということもない。