Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ========== tester.rb
- require 'rubygems'
- require 'sequel'
- require 'logger'
- Sequel.connect(:database => 'sequel_tester', :adapter => 'mysql', :host => 'localhost', :username => 'root', :password => '', :logger => Logger.new('sequel.log'))
- class Animal < Sequel::Model
- set_schema do
- primary_key :id
- String :name, :unique => true
- end
- def self.multi_insert_ignore(*args)
- def dataset.multi_insert_sql(columns,values)
- sql = super(columns,values)
- sql[0].gsub!(/^INSERT/,'INSERT IGNORE')
- end
- multi_insert(*args)
- end
- def self.multi_insert_update(*args)
- def dataset.multi_insert_sql(columns,values)
- sql = super(columns,values)
- dup = columns.map {|column| "#{column}=VALUES(#{column})"}.join(', ')
- sql[0] << " ON DUPLICATE KEY UPDATE #{dup}"
- end
- multi_insert(*args)
- end
- end
- Animal.create_table unless Animal.table_exists?
- Animal.delete_all
- @columns = [:name,:kind]
- @values1 = [
- ['sally','monkey'],
- ['bob','bird'],
- ['john','monkey'],
- ['mark','elephant'],
- ['fred','bird']
- ]
- @values2 = [
- ['sally','monkey2'],
- ['bob','bird2'],
- ['john','monkey2'],
- ['mark','elephant2'],
- ['fred','bird2']
- ]
- def ignore
- Animal.multi_insert_ignore(@columns,@values1, :slice => 2)
- end
- def update
- Animal.multi_insert_update(@columns,@values2, :slice => 2)
- end
- def results
- puts "#{Animal.first.name} : #{Animal.first.kind}"
- end
- ignore
- results
- ignore
- results
- update
- results
- update
- results
- ========== output from command line
- $ irb -r tester.rb
- sally : monkey
- sally : monkey
- sally : monkey2
- sally : monkey2
- ========== sequel.log
- # Logfile created on Tue Mar 24 14:46:17 -0400 2009 by /
- I, [2009-03-24T14:46:17.736067 #68545] INFO -- : DESCRIBE `animals`
- I, [2009-03-24T14:46:17.740144 #68545] INFO -- : DELETE FROM `animals`
- I, [2009-03-24T14:46:17.740815 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.740995 #68545] INFO -- : INSERT IGNORE INTO `animals` (`name`, `kind`) VALUES ('sally', 'monkey'), ('bob', 'bird')
- I, [2009-03-24T14:46:17.741872 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.742173 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.742338 #68545] INFO -- : INSERT IGNORE INTO `animals` (`name`, `kind`) VALUES ('john', 'monkey'), ('mark', 'elephant')
- I, [2009-03-24T14:46:17.743008 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.743265 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.743420 #68545] INFO -- : INSERT IGNORE INTO `animals` (`name`, `kind`) VALUES ('fred', 'bird')
- I, [2009-03-24T14:46:17.743852 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.744188 #68545] INFO -- : SELECT * FROM `animals` LIMIT 1
- I, [2009-03-24T14:46:17.745010 #68545] INFO -- : SELECT * FROM `animals` LIMIT 1
- I, [2009-03-24T14:46:17.745815 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.746049 #68545] INFO -- : INSERT IGNORE INTO `animals` (`name`, `kind`) VALUES ('sally', 'monkey'), ('bob', 'bird')
- I, [2009-03-24T14:46:17.746801 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.747110 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.747277 #68545] INFO -- : INSERT IGNORE INTO `animals` (`name`, `kind`) VALUES ('john', 'monkey'), ('mark', 'elephant')
- I, [2009-03-24T14:46:17.747903 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.748162 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.748316 #68545] INFO -- : INSERT IGNORE INTO `animals` (`name`, `kind`) VALUES ('fred', 'bird')
- I, [2009-03-24T14:46:17.748784 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.749116 #68545] INFO -- : SELECT * FROM `animals` LIMIT 1
- I, [2009-03-24T14:46:17.749740 #68545] INFO -- : SELECT * FROM `animals` LIMIT 1
- I, [2009-03-24T14:46:17.750453 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.750643 #68545] INFO -- : INSERT INTO `animals` (`name`, `kind`) VALUES ('sally', 'monkey2'), ('bob', 'bird2') ON DUPLICATE KEY UPDATE name=VALUES(name), kind=VALUES(kind)
- I, [2009-03-24T14:46:17.751519 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.751817 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.751982 #68545] INFO -- : INSERT INTO `animals` (`name`, `kind`) VALUES ('john', 'monkey2'), ('mark', 'elephant2') ON DUPLICATE KEY UPDATE name=VALUES(name), kind=VALUES(kind)
- I, [2009-03-24T14:46:17.752730 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.752994 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.753157 #68545] INFO -- : INSERT INTO `animals` (`name`, `kind`) VALUES ('fred', 'bird2') ON DUPLICATE KEY UPDATE name=VALUES(name), kind=VALUES(kind)
- I, [2009-03-24T14:46:17.753703 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.754027 #68545] INFO -- : SELECT * FROM `animals` LIMIT 1
- I, [2009-03-24T14:46:17.754807 #68545] INFO -- : SELECT * FROM `animals` LIMIT 1
- I, [2009-03-24T14:46:17.755523 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.755710 #68545] INFO -- : INSERT INTO `animals` (`name`, `kind`) VALUES ('sally', 'monkey2'), ('bob', 'bird2') ON DUPLICATE KEY UPDATE name=VALUES(name), kind=VALUES(kind)
- I, [2009-03-24T14:46:17.756490 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.756786 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.756995 #68545] INFO -- : INSERT INTO `animals` (`name`, `kind`) VALUES ('john', 'monkey2'), ('mark', 'elephant2') ON DUPLICATE KEY UPDATE name=VALUES(name), kind=VALUES(kind)
- I, [2009-03-24T14:46:17.757744 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.758013 #68545] INFO -- : BEGIN
- I, [2009-03-24T14:46:17.758179 #68545] INFO -- : INSERT INTO `animals` (`name`, `kind`) VALUES ('fred', 'bird2') ON DUPLICATE KEY UPDATE name=VALUES(name), kind=VALUES(kind)
- I, [2009-03-24T14:46:17.758630 #68545] INFO -- : COMMIT
- I, [2009-03-24T14:46:17.758954 #68545] INFO -- : SELECT * FROM `animals` LIMIT 1
- I, [2009-03-24T14:46:17.759592 #68545] INFO -- : SELECT * FROM `animals` LIMIT 1
Add Comment
Please, Sign In to add comment