訳は判らないけど、うまくいったSQL文

dataは、{"[colum名]"=>"[値]", …} な感じです。
今回は値が全部テキスト(日付、時刻も整形済み)だったのでこれでOK。


res = db.query(<<-"END_OF_SQL")
INSERT INTO #{DB_TABLE}
( #{data.keys.join(', ')} )
VALUES
( #{data.values.map{|val|
("'"+val.gsub("\\","\\\\\\").gsub("\'","\\\\\'")+"'").encode("EUC-JP")}.join(', ') } );
END_OF_SQL
数値の値が混じるときはもう一段必要ですが。