├── .gemtest ├── lib ├── mysql2xxxx │ ├── version.rb │ ├── writer │ │ ├── json.rb │ │ ├── csv.rb │ │ └── xml.rb │ ├── cli.rb │ ├── writer.rb │ └── config.rb └── mysql2xxxx.rb ├── .gitignore ├── benchmark ├── five_thousand_rows.sql.bz2 ├── target.rb ├── results │ ├── 0.2.1-20120315104215-ruby19.txt │ ├── 0.0.4-20110315110613-ruby19.txt │ ├── 0.0.3-20110314153320.txt │ ├── 0.0.4-20110314190640.txt │ ├── 0.0.4-20110315110535-ruby18.txt │ └── 0.0.3-20110314160922.txt └── benchmark.rb ├── bin ├── mysql2csv ├── mysql2json └── mysql2xml ├── Gemfile ├── CHANGELOG ├── test ├── test_active_record_config_stealing.rb ├── test_multiline_sql.rb ├── test_cli.rb ├── test_mysql2xxxx.rb ├── helper.rb ├── test_well_formedness.rb ├── test_extra_outputs.rb └── fixtures │ ├── automobile_makes.sql │ └── automobile_make_years.sql ├── Rakefile ├── mysql2xxxx.gemspec ├── LICENSE └── README.rdoc /.gemtest: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/mysql2xxxx/version.rb: -------------------------------------------------------------------------------- 1 | module Mysql2xxxx 2 | VERSION = "0.3.0" 3 | end 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | .bundle 3 | Gemfile.lock 4 | pkg/* 5 | rdoc/* 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /benchmark/five_thousand_rows.sql.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seamusabshere/mysql2xxxx/HEAD/benchmark/five_thousand_rows.sql.bz2 -------------------------------------------------------------------------------- /bin/mysql2csv: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "mysql2xxxx" 4 | require 'mysql2xxxx/cli' 5 | 6 | cli = Mysql2xxxx::Cli.new 7 | cli.parse_options 8 | 9 | Mysql2xxxx::CSV.new(cli.config).to_stdout 10 | -------------------------------------------------------------------------------- /bin/mysql2json: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "mysql2xxxx" 4 | require 'mysql2xxxx/cli' 5 | 6 | cli = Mysql2xxxx::Cli.new 7 | cli.parse_options 8 | 9 | Mysql2xxxx::JSON.new(cli.config).to_stdout 10 | -------------------------------------------------------------------------------- /bin/mysql2xml: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "mysql2xxxx" 4 | require 'mysql2xxxx/cli' 5 | 6 | cli = Mysql2xxxx::Cli.new 7 | cli.parse_options 8 | 9 | Mysql2xxxx::XML.new(cli.config).to_stdout 10 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "http://rubygems.org" 2 | 3 | gemspec 4 | 5 | gem 'rake' 6 | gem 'activerecord' 7 | gem 'posix-spawn' 8 | 9 | if RUBY_VERSION >= '1.9' 10 | gem 'ruby-debug19' 11 | else 12 | if RUBY_PLATFORM != 'java' 13 | gem 'memprof' 14 | end 15 | gem 'ruby-debug' 16 | end 17 | -------------------------------------------------------------------------------- /CHANGELOG: -------------------------------------------------------------------------------- 1 | unreleased 2 | 3 | * Breaking changes 4 | 5 | * Requires ActiveRecord 3.1+ 6 | * Requires (unreleased as of this writing) mysql2's streaming abilities 7 | 8 | * Enhancements 9 | 10 | * Replace mysql with mysql2 (possible because mysql2 0.3.x's streaming keeps memory use under control) 11 | * Use new MultiJson syntax 12 | -------------------------------------------------------------------------------- /lib/mysql2xxxx.rb: -------------------------------------------------------------------------------- 1 | unless RUBY_VERSION >= '1.9' 2 | $KCODE = 'U' 3 | end 4 | require 'active_support' 5 | require 'active_support/version' 6 | require 'active_support/core_ext' if ::ActiveSupport::VERSION::MAJOR >= 3 7 | 8 | require 'mysql2' 9 | 10 | require 'mysql2xxxx/config' 11 | require 'mysql2xxxx/writer' 12 | require 'mysql2xxxx/writer/json' 13 | require 'mysql2xxxx/writer/csv' 14 | require 'mysql2xxxx/writer/xml' 15 | 16 | module Mysql2xxxx 17 | end 18 | -------------------------------------------------------------------------------- /lib/mysql2xxxx/writer/json.rb: -------------------------------------------------------------------------------- 1 | require 'multi_json' 2 | 3 | module Mysql2xxxx 4 | class JSON < Writer 5 | def to_file(f) 6 | first = true 7 | f.write '[' 8 | client.query(last_statement, :stream => true, :cache_rows => false).each do |hsh| 9 | next if hsh.nil? 10 | if first 11 | first = false 12 | else 13 | f.write ',' 14 | end 15 | f.write ::MultiJson.dump(hsh) 16 | end 17 | f.write ']' 18 | nil 19 | end 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /test/test_active_record_config_stealing.rb: -------------------------------------------------------------------------------- 1 | require 'helper' 2 | 3 | # just to be able to steal the config 4 | ActiveRecord::Base.establish_connection( 5 | 'adapter' => 'mysql2', 6 | 'database' => TEST_DB, 7 | 'username' => MYSQL_USER, 8 | 'password' => MYSQL_PASS 9 | ) 10 | 11 | class TestActiveRecordConfigStealing < Test::Unit::TestCase 12 | def test_steals_config 13 | a = Mysql2xxxx::JSON.new @options.slice(:execute) 14 | str = a.to_s 15 | assert str.include?('Acura') 16 | assert !str.include?('DaimlerChrysler') 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'bundler' 2 | Bundler::GemHelper.install_tasks 3 | require 'bundler/setup' 4 | 5 | require 'rake' 6 | require 'rake/testtask' 7 | Rake::TestTask.new(:test) do |test| 8 | test.libs << 'lib' << 'test' 9 | test.pattern = 'test/**/test_*.rb' 10 | test.verbose = true 11 | end 12 | 13 | task :default => :test 14 | 15 | begin 16 | require 'rake/rdoctask' 17 | Rake::RDocTask.new do |rdoc| 18 | rdoc.rdoc_dir = 'rdoc' 19 | rdoc.title = 'remote_table' 20 | rdoc.options << '--line-numbers' << '--inline-source' 21 | rdoc.rdoc_files.include('README*') 22 | rdoc.rdoc_files.include('lib/**/*.rb') 23 | end 24 | rescue LoadError 25 | puts "Rdoc is not available" 26 | end 27 | -------------------------------------------------------------------------------- /lib/mysql2xxxx/cli.rb: -------------------------------------------------------------------------------- 1 | require 'mixlib/cli' 2 | 3 | module Mysql2xxxx 4 | class Cli 5 | include ::Mixlib::CLI 6 | %w{ user password host Port database }.each do |o| 7 | option o.downcase.to_sym, 8 | :short => "-#{o[0,1]} #{o.upcase}", 9 | :long => "--#{o.downcase}=#{o.upcase}", 10 | :description => "Set MySQL #{o.downcase}" 11 | end 12 | option :execute, 13 | :short => '-e EXECUTE', 14 | :long => '--execute=EXECUTE', 15 | :description => 'The SQL statement to execute' 16 | option :help, 17 | :long => "--help", 18 | :description => "Show this message", 19 | :on => :tail, 20 | :boolean => true, 21 | :show_options => true, 22 | :exit => 0 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /benchmark/target.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | unless RUBY_VERSION >= '1.9' 3 | require 'rubygems' 4 | require 'memprof' 5 | end 6 | $LOAD_PATH.unshift File.join(ENV['HERE'], '..', 'lib') 7 | require 'mysql2xxxx' 8 | 9 | format = ARGV[0] 10 | 11 | if RUBY_VERSION >= '1.9' 12 | # unfortunately can't use memprof 13 | a = Mysql2xxxx.const_get(format).new :user => ENV['DBUSER'], :password => ENV['DBPASSWORD'], :database => ENV['DBNAME'], :execute => ENV['EXECUTE'] 14 | a.to_path ENV['DUMP_PATH'] 15 | else 16 | Memprof.track(ENV['MEMPROF_REPORT_PATH']) do 17 | a = Mysql2xxxx.const_get(format).new :user => ENV['DBUSER'], :password => ENV['DBPASSWORD'], :database => ENV['DBNAME'], :execute => ENV['EXECUTE'] 18 | a.to_path ENV['DUMP_PATH'] 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /test/test_multiline_sql.rb: -------------------------------------------------------------------------------- 1 | require 'helper' 2 | 3 | class TestMultilineSql < Test::Unit::TestCase 4 | def test_multiline_sql 5 | a = Mysql2xxxx::JSON.new @options.merge(:execute => %{ 6 | DROP TABLE IF EXISTS t1; CREATE TEMPORARY TABLE t1 SELECT CONCAT_WS('-', year, make_name) AS crazy_name FROM automobile_make_years; SELECT * FROM t1 7 | }) 8 | str = a.to_s 9 | assert str.include?('2002-Acura') 10 | end 11 | def test_multiline_sql_with_ending_semicolon 12 | a = Mysql2xxxx::JSON.new @options.merge(:execute => %{ 13 | DROP TABLE IF EXISTS t1; CREATE TEMPORARY TABLE t1 SELECT CONCAT_WS('-', year, make_name) AS crazy_name FROM automobile_make_years; SELECT * FROM t1 14 | ; 15 | }) 16 | str = a.to_s 17 | assert str.include?('2002-Acura') 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /lib/mysql2xxxx/writer/csv.rb: -------------------------------------------------------------------------------- 1 | if RUBY_VERSION >= '1.9' 2 | require 'csv' 3 | else 4 | require 'fastercsv' 5 | end 6 | 7 | module Mysql2xxxx 8 | class CSV < Writer 9 | SLASH_N = '\N'.freeze 10 | def to_file(f) 11 | slash_n = config.slash_n 12 | 13 | result = client.query(last_statement, :stream => true, :cache_rows => false, :as => :array) 14 | fields = result.fields 15 | 16 | if slash_n 17 | f.write fields.map { |v| v.nil? ? SLASH_N : v }.to_csv 18 | else 19 | f.write fields.to_csv 20 | end 21 | 22 | result.each do |ary| 23 | next if ary.nil? 24 | if slash_n 25 | f.write ary.map { |v| v.nil? ? SLASH_N : v }.to_csv 26 | else 27 | f.write ary.to_csv 28 | end 29 | end 30 | 31 | nil 32 | end 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /test/test_cli.rb: -------------------------------------------------------------------------------- 1 | require 'helper' 2 | 3 | class TestCli < Test::Unit::TestCase 4 | def test_xml 5 | a = POSIX::Spawn::Child.new %{mysql2xml --user=#{@options[:user]} --password=#{@options[:password]} --database=#{@options[:database]} --execute="#{@options[:execute]}"} 6 | assert a.out.include?('Acura') 7 | assert !a.out.include?('DaimlerChrysler') 8 | end 9 | 10 | def test_json 11 | a = POSIX::Spawn::Child.new %{mysql2json --user=#{@options[:user]} --password=#{@options[:password]} --database=#{@options[:database]} --execute="#{@options[:execute]}"} 12 | assert a.out.include?('Acura') 13 | assert !a.out.include?('DaimlerChrysler') 14 | end 15 | 16 | def test_csv 17 | a = POSIX::Spawn::Child.new %{mysql2csv --user=#{@options[:user]} --password=#{@options[:password]} --database=#{@options[:database]} --execute="#{@options[:execute]}"} 18 | assert a.out.include?('Acura') 19 | assert !a.out.include?('DaimlerChrysler') 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /lib/mysql2xxxx/writer/xml.rb: -------------------------------------------------------------------------------- 1 | module Mysql2xxxx 2 | class XML < Writer 3 | # sabshere 2/10/11 dkastner pointed out that this doesn't include metadata like later versions of mysql do 4 | # this matches the xml generated by "mysql --xml" 5 | # i tried to use builder, but the String#to_xs nonsense got in the way 6 | def to_file(f) 7 | result = client.query(last_statement, :stream => true, :cache_rows => false, :as => :array) 8 | escaped_fields = result.fields.map { |k| k.to_xs } 9 | 10 | f.write %{} 11 | f.write %{} 12 | result.each do |ary| 13 | next if ary.nil? 14 | f.write %{} 15 | ary.each_with_index do |v, i| 16 | f.write %{#{v.to_s.to_xs}} 17 | end 18 | f.write %{} 19 | end 20 | f.write %{} 21 | nil 22 | end 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /mysql2xxxx.gemspec: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | require File.expand_path("../lib/mysql2xxxx/version", __FILE__) 3 | 4 | Gem::Specification.new do |s| 5 | s.name = "mysql2xxxx" 6 | s.version = Mysql2xxxx::VERSION 7 | s.authors = ["Seamus Abshere"] 8 | s.email = ["seamus@abshere.net"] 9 | s.homepage = "https://github.com/seamusabshere/mysql2xxxx" 10 | s.summary = %q{In a memory-sensitive way (but not fast), dump mysql tables to JSON, CSV, XML.} 11 | s.description = %q{Gives you binaries like mysql2csv, mysql2json, and mysql2xml, and Ruby classes to match.} 12 | 13 | s.rubyforge_project = "mysql2xxxx" 14 | 15 | s.files = `git ls-files`.split("\n") 16 | s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") 17 | s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } 18 | s.require_paths = ["lib"] 19 | 20 | s.add_dependency 'activesupport', '>=3.1' 21 | s.add_dependency 'mysql2', '>=0.3' 22 | s.add_dependency 'mixlib-cli' 23 | s.add_dependency 'fast_xs' 24 | s.add_dependency 'fastercsv' 25 | s.add_dependency 'multi_json' 26 | end 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 Seamus Abshere 2 | 3 | MIT License 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /test/test_mysql2xxxx.rb: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | require 'helper' 3 | 4 | class TestMysql2xxxx < Test::Unit::TestCase 5 | def test_1_mysql2json 6 | a = Mysql2xxxx::JSON.new @options 7 | str = a.to_s 8 | assert str.include?('Acura') 9 | if RUBY_VERSION >= '1.9' 10 | assert str.include?('Citro\u00ebn') 11 | else 12 | assert str.include?('Citroën') 13 | end 14 | assert !str.include?('DaimlerChrysler') 15 | end 16 | 17 | def test_2_mysql2csv 18 | a = Mysql2xxxx::CSV.new @options 19 | str = a.to_s 20 | assert str.include?('Acura') 21 | assert str.include?('Citroën') 22 | assert !str.include?('DaimlerChrysler') 23 | end 24 | 25 | def test_3_mysql2xml 26 | a = Mysql2xxxx::XML.new @options 27 | str = a.to_s 28 | assert str.include?('Acura') 29 | assert str.include?('Citroën') 30 | assert !str.include?('DaimlerChrysler') 31 | end 32 | 33 | def test_4_slash_n_for_nulls 34 | a = Mysql2xxxx::CSV.new @options 35 | assert a.to_s.include?(',,') 36 | b = Mysql2xxxx::CSV.new @options.merge(:slash_n => true) 37 | assert b.to_s.include?(',\N,') 38 | end 39 | end 40 | -------------------------------------------------------------------------------- /benchmark/results/0.2.1-20120315104215-ruby19.txt: -------------------------------------------------------------------------------- 1 | mysql2xxxx 2 | Version: 0.2.1 3 | Run: 2012-03-15 10:42:15 -0500 4 | System: Darwin alzabo0 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:32:41 PDT 2011; root:xnu-1504.15.3~1/RELEASE_X86_64 x86_64 5 | 6 | ################################################## 7 | # CSV 8 | ################################################## 9 | Real memory over time (sampled every 0.3 sec): 10 | 0:00.30 13772 11 | 0:00.58 24444 12 | 0:00.89 25084 13 | 0:01.19 25084 14 | Memprof object counts not available (ruby 1.9) 15 | 16 | ################################################## 17 | # JSON 18 | ################################################## 19 | Real memory over time (sampled every 0.3 sec): 20 | 0:00.30 13636 21 | 0:00.61 22288 22 | 0:00.91 22540 23 | 0:01.21 22540 24 | 0:01.52 22540 25 | 0:01.82 22540 26 | 0:02.12 22540 27 | 0:02.43 22540 28 | Memprof object counts not available (ruby 1.9) 29 | 30 | ################################################## 31 | # XML 32 | ################################################## 33 | Real memory over time (sampled every 0.3 sec): 34 | 0:00.30 13356 35 | 0:00.61 21660 36 | 0:00.91 21660 37 | Memprof object counts not available (ruby 1.9) 38 | -------------------------------------------------------------------------------- /test/helper.rb: -------------------------------------------------------------------------------- 1 | require 'rubygems' 2 | require 'bundler' 3 | Bundler.setup 4 | 5 | if ::Bundler.definition.specs['debugger'].first 6 | require 'debugger' 7 | elsif ::Bundler.definition.specs['ruby-debug'].first 8 | require 'ruby-debug' 9 | end 10 | 11 | require 'test/unit' 12 | require 'fileutils' 13 | require 'active_record' 14 | require 'posix/spawn' 15 | require 'mysql2xxxx' 16 | 17 | MYSQL_USER = 'root' 18 | MYSQL_PASS = 'password' 19 | MYSQL_HOST = '127.0.0.1' 20 | TEST_DB = 'mysql2xxxx_test' 21 | 22 | def execute_sql(sql, db = 'mysql') 23 | POSIX::Spawn::Child.new %{mysql -u #{MYSQL_USER} -p#{MYSQL_PASS} --database="#{db}" --execute="#{sql}"} 24 | end 25 | 26 | execute_sql "DROP DATABASE IF EXISTS #{TEST_DB}" 27 | execute_sql "CREATE DATABASE #{TEST_DB}" 28 | execute_sql "SOURCE test/fixtures/automobile_makes.sql", TEST_DB 29 | execute_sql "SOURCE test/fixtures/automobile_make_years.sql", TEST_DB 30 | 31 | class Test::Unit::TestCase 32 | def setup 33 | @options = { 34 | :execute => %{SELECT * FROM automobile_makes WHERE automobile_makes.name IN (SELECT DISTINCT automobile_make_years.make_name FROM automobile_make_years)}, 35 | :user => MYSQL_USER, 36 | :password => MYSQL_PASS, 37 | :database => TEST_DB, 38 | :host => MYSQL_HOST 39 | } 40 | end 41 | end 42 | -------------------------------------------------------------------------------- /test/test_well_formedness.rb: -------------------------------------------------------------------------------- 1 | require 'helper' 2 | 3 | if RUBY_VERSION >= '1.9' 4 | require 'csv' 5 | else 6 | require 'fastercsv' 7 | end 8 | 9 | class TestWellFormedness < Test::Unit::TestCase 10 | def test_xml 11 | a = POSIX::Spawn::Child.new %{./bin/mysql2xml --user=#{@options[:user]} --password=#{@options[:password]} --database=#{@options[:database]} --execute="#{@options[:execute]}"} 12 | funny_looking_hash = Hash.from_xml a.out 13 | assert funny_looking_hash['resultset']['row'].one? { |hsh| hsh['field'][0] == 'Yugo' } 14 | end 15 | 16 | def test_json 17 | a = POSIX::Spawn::Child.new %{./bin/mysql2json --user=#{@options[:user]} --password=#{@options[:password]} --database=#{@options[:database]} --execute="#{@options[:execute]}"} 18 | array_of_hashes = MultiJson.load a.out 19 | assert array_of_hashes.one? { |hsh| hsh['name'] == 'Yugo' } 20 | end 21 | 22 | def test_csv 23 | a = POSIX::Spawn::Child.new %{./bin/mysql2csv --user=#{@options[:user]} --password=#{@options[:password]} --database=#{@options[:database]} --execute="#{@options[:execute]}"} 24 | found_yugo = false 25 | (defined?(FasterCSV) ? FasterCSV : CSV).parse(a.out, :headers => :first_row) do |row| 26 | found_yugo = true if row['name'] == 'Yugo' 27 | end 28 | assert found_yugo 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /test/test_extra_outputs.rb: -------------------------------------------------------------------------------- 1 | require 'helper' 2 | 3 | class TestExtraOutputs < Test::Unit::TestCase 4 | def test_mysql2json_to_s 5 | a = Mysql2xxxx::JSON.new @options 6 | str = a.to_s 7 | assert str.include?('Acura') 8 | assert !str.include?('DaimlerChrysler') 9 | end 10 | 11 | def test_mysql2json_to_path 12 | path = '/tmp/test_mysql2json_to_path' 13 | a = Mysql2xxxx::JSON.new @options 14 | a.to_path path 15 | assert File.read(path).include?('Acura') 16 | assert !File.read(path).include?('DaimlerChrysler') 17 | end 18 | 19 | def test_mysql2json_to_file 20 | f = File.open('/tmp/test_mysql2json_to_file', 'w') 21 | a = Mysql2xxxx::JSON.new @options 22 | a.to_file f 23 | f.close 24 | assert File.read(f.path).include?('Acura') 25 | assert !File.read(f.path).include?('DaimlerChrysler') 26 | end 27 | 28 | def test_mysql2json_to_stdout 29 | a = Mysql2xxxx::JSON.new @options 30 | begin 31 | require 'stringio' 32 | old_stdout = $stdout 33 | my_stdout = StringIO.new 34 | $stdout = my_stdout 35 | a.to_stdout 36 | $stdout = old_stdout 37 | my_stdout.rewind 38 | assert my_stdout.read.include?('Acura') 39 | assert !my_stdout.read.include?('DaimlerChrysler') 40 | ensure 41 | $stdout = old_stdout 42 | end 43 | end 44 | end 45 | -------------------------------------------------------------------------------- /benchmark/results/0.0.4-20110315110613-ruby19.txt: -------------------------------------------------------------------------------- 1 | mysql2xxxx 2 | Version: 0.0.4 3 | Run: 2011-03-15 11:06:13 -0500 4 | System: Darwin vidalia 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386 5 | 6 | ################################################## 7 | # CSV 8 | ################################################## 9 | Real memory over time (sampled every 0.3 sec): 10 | 0:00.31 12416 11 | 0:00.61 15264 12 | 0:00.92 15800 13 | 0:01.23 15800 14 | 0:01.54 15800 15 | Memprof object counts not available (ruby 1.9) 16 | 17 | ################################################## 18 | # JSON 19 | ################################################## 20 | Real memory over time (sampled every 0.3 sec): 21 | 0:00.31 12424 22 | 0:00.61 15576 23 | 0:00.91 15684 24 | 0:01.22 15852 25 | 0:01.53 15852 26 | 0:01.83 15852 27 | 0:02.14 15852 28 | 0:02.45 15852 29 | 0:02.75 15852 30 | 0:03.06 15852 31 | 0:03.37 15852 32 | 0:03.67 15852 33 | 0:03.97 15852 34 | Memprof object counts not available (ruby 1.9) 35 | 36 | ################################################## 37 | # XML 38 | ################################################## 39 | Real memory over time (sampled every 0.3 sec): 40 | 0:00.30 12928 41 | 0:00.60 14616 42 | 0:00.91 14616 43 | Memprof object counts not available (ruby 1.9) 44 | -------------------------------------------------------------------------------- /lib/mysql2xxxx/writer.rb: -------------------------------------------------------------------------------- 1 | require 'stringio' 2 | 3 | module Mysql2xxxx 4 | class Writer 5 | attr_reader :config 6 | 7 | def initialize(options = {}) 8 | @config = Config.new options 9 | end 10 | 11 | def last_statement 12 | return @last_statement if @last_statement.is_a? ::String 13 | statements = config.execute.split(';').select { |statement| statement.to_s.strip.length > 0 } 14 | last_statement = statements.pop 15 | statements.each do |statement| 16 | client.query statement 17 | # but we're not using the results, of course 18 | end 19 | @last_statement = last_statement 20 | end 21 | 22 | def client 23 | return @client if @client.is_a? ::Mysql2::Client 24 | @client = ::Mysql2::Client.new(:host => config.host, :username => config.user, :password => config.password, :database => config.database, :port => config.port, :socket => config.socket) 25 | end 26 | 27 | def to_s 28 | s = ::StringIO.new 29 | to_file s 30 | s.rewind 31 | s.read 32 | end 33 | 34 | def to_stdout 35 | to_file $stdout 36 | nil 37 | end 38 | 39 | def to_path(path) 40 | f = ::RUBY_VERSION >= '1.9' ? ::File.open(path, 'w', :binmode => true) : ::File.open(path, 'w') 41 | to_file f 42 | f.close 43 | nil 44 | end 45 | end 46 | end 47 | -------------------------------------------------------------------------------- /README.rdoc: -------------------------------------------------------------------------------- 1 | =mysql2xxxx 2 | 3 | ==Binaries 4 | 5 | mysql2csv --user=dbuser --password=dbpassword --database=dbname --execute="select * from automobile_makes" 6 | mysql2json --user=dbuser --password=dbpassword --database=dbname --execute="select * from automobile_makes" 7 | mysql2xml --user=dbuser --password=dbpassword --database=dbname --execute="select * from automobile_makes" 8 | 9 | To see all options 10 | 11 | mysql2csv --help 12 | 13 | ==Ruby 14 | 15 | a = Mysql2xxxx::JSON.new :user => 'dbuser', :password => 'dbpassword', :database => 'dbname', :execute => "select * from automobile_makes" 16 | a.to_stdout # write it directly to $stdout 17 | puts a.to_s # get a string 18 | a.to_path('/tmp/outfile.json') # write it to a file at this path 19 | a.to_file(File.open('/tmp/outfile.json', 'w')) # write it to a file handle 20 | 21 | Note also that if you're running it inside a Rails application, it will default to the ActiveRecord connection config. 22 | 23 | a = Mysql2xxxx::JSON.new :execute => "select * from automobile_makes" # no need to specify user, etc. because it's taken from ActiveRecord 24 | 25 | ==Well-formedness 26 | 27 | * CSV output depends on FasterCSV to_csv 28 | * JSON output depends on Florian Frank's JSON JSON.generate 29 | * XML output is written manually, but looks like the output of mysql [hyphen][hyphen]xml 30 | 31 | Copyright 2011 Seamus Abshere 32 | -------------------------------------------------------------------------------- /lib/mysql2xxxx/config.rb: -------------------------------------------------------------------------------- 1 | module Mysql2xxxx 2 | class Config 3 | attr_reader :user_specified_options 4 | def initialize(user_specified_options = {}) 5 | @user_specified_options = user_specified_options.symbolize_keys 6 | end 7 | 8 | def user 9 | user_specified_options[:user] || active_record_config.try(:[], :username) 10 | end 11 | 12 | def password 13 | user_specified_options[:password] || active_record_config.try(:[], :password) 14 | end 15 | 16 | def host 17 | user_specified_options[:host] || active_record_config.try(:[], :host) 18 | end 19 | 20 | def port 21 | user_specified_options[:port] || active_record_config.try(:[], :port) 22 | end 23 | 24 | def socket 25 | user_specified_options[:socket] || active_record_config.try(:[], :socket) 26 | end 27 | 28 | def database 29 | user_specified_options[:database] || active_record_connection.try(:current_database) 30 | end 31 | 32 | def execute 33 | user_specified_options[:execute] 34 | end 35 | 36 | # Whether to write \N instead of a blank string for NULL. This is helpful for mysqlimport. 37 | # 38 | # Only applies to CSV 39 | def slash_n 40 | user_specified_options.fetch :slash_n, false 41 | end 42 | 43 | private 44 | 45 | def active_record_connection 46 | if defined?(::ActiveRecord) 47 | ::ActiveRecord::Base.connection 48 | end 49 | rescue 50 | # oh well 51 | end 52 | 53 | def active_record_config 54 | if active_record_connection 55 | active_record_connection.instance_variable_get :@config 56 | end 57 | end 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /benchmark/benchmark.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | ENV['HERE'] = File.dirname(__FILE__) 4 | ENV['DBUSER'] = 'root' 5 | ENV['DBPASSWORD'] = 'password' 6 | ENV['DBNAME'] = 'mysql2xxxx_benchmark' 7 | ENV['MEMPROF_REPORT_PATH'] = File.expand_path('memprof.txt') 8 | ENV['DUMP_PATH'] = File.expand_path('a.dump') 9 | ENV['EXECUTE'] = 'SELECT * FROM five_thousand_rows' 10 | FORMATS = %w{ CSV JSON XML } 11 | SAMPLE_RATE = 0.3 12 | TOP_OBJECTS = 25 13 | 14 | require 'fileutils' 15 | unless RUBY_VERSION >= '1.9' 16 | require 'rubygems' 17 | end 18 | require 'posix/spawn' 19 | $LOAD_PATH.unshift File.join(ENV['HERE'], '..', 'lib') 20 | require 'mysql2xxxx' 21 | require 'mysql2xxxx/version' 22 | 23 | $stderr.puts "Loading sample data..." 24 | `bunzip2 #{ENV['HERE']}/five_thousand_rows.sql.bz2 -c | mysql -u #{ENV['DBUSER']} -p#{ENV['DBPASSWORD']} --database #{ENV['DBNAME']}` 25 | 26 | now = Time.now 27 | mem = {} 28 | $mem2 = {} 29 | 30 | begin 31 | FORMATS.each do |format| 32 | $stderr.puts "Benchmarking #{format}..." 33 | pid = POSIX::Spawn.spawn('ruby', "#{ENV['HERE']}/target.rb", format) 34 | watcher = Thread.new do 35 | while true 36 | sleep SAMPLE_RATE 37 | $mem2[format] ||= [] 38 | $mem2[format] << `ps -o time= -o rss= -p #{pid}` 39 | end 40 | end 41 | Process.waitpid(pid) 42 | watcher.kill 43 | raise "target failed on #{format}" unless $?.success? 44 | mem[format] = IO.readlines(ENV['MEMPROF_REPORT_PATH'])[0..TOP_OBJECTS-1] unless RUBY_VERSION >= '1.9' 45 | end 46 | ensure 47 | FileUtils.rm_f ENV['MEMPROF_REPORT_PATH'] 48 | FileUtils.rm_f ENV['DUMP_PATH'] 49 | end 50 | 51 | $stderr.puts "Writing report..." 52 | File.open File.expand_path(File.join(ENV['HERE'], 'results', "#{Mysql2xxxx::VERSION}-#{now.to_formatted_s(:number)}-#{RUBY_VERSION >= '1.9' ? 'ruby19' : 'ruby18'}.txt")), 'w' do |f| 53 | f.puts %{mysql2xxxx} 54 | f.puts %{Version: #{Mysql2xxxx::VERSION}} 55 | f.puts %{Run: #{now}} 56 | f.puts %{System: #{`uname -a`}} 57 | FORMATS.each do |format| 58 | f.puts 59 | f.puts "#" * 50 60 | f.puts "# #{format}" 61 | f.puts "#" * 50 62 | f.puts %{Real memory over time (sampled every #{SAMPLE_RATE} sec):} 63 | f.puts $mem2[format] 64 | if RUBY_VERSION >= '1.9' 65 | f.puts %{Memprof object counts not available (ruby 1.9)} 66 | else 67 | f.puts %{Memprof object counts (top #{TOP_OBJECTS}):} 68 | f.puts mem[format] 69 | end 70 | end 71 | end 72 | -------------------------------------------------------------------------------- /benchmark/results/0.0.3-20110314153320.txt: -------------------------------------------------------------------------------- 1 | mysql2xxxx 2 | Version: 0.0.3 3 | Run: Mon Mar 14 15:33:20 -0500 2011 4 | System: Darwin vidalia 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386 5 | 6 | CSV 7 | Time: 5.2898850440979 8 | Memory: 9 | 55050 ./benchmark/../lib/mysql2xxxx/csv.rb:25:String 10 | 24858 ./benchmark/../lib/mysql2xxxx/csv.rb:25:Float 11 | 10000 (eval):4:Array 12 | 5423 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/rational.rb:94:Rational 13 | 5052 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:437:Array 14 | 5001 ./benchmark/../lib/mysql2xxxx/csv.rb:25:Hash 15 | 5000 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:754:Date 16 | 1320 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1798:String 17 | 1301 ./benchmark/../lib/mysql2xxxx/csv.rb:14:Array 18 | 1300 ./benchmark/../lib/mysql2xxxx/csv.rb:30:__varmap__ 19 | 20 | JSON 21 | Time: 15.9774219989777 22 | Memory: 23 | 55050 ./benchmark/../lib/mysql2xxxx/json.rb:26:String 24 | 24858 ./benchmark/../lib/mysql2xxxx/json.rb:26:Float 25 | 10000 (eval):4:Array 26 | 5025 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/rational.rb:94:Rational 27 | 5003 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:437:Array 28 | 5001 ./benchmark/../lib/mysql2xxxx/json.rb:26:Hash 29 | 5000 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:754:Date 30 | 280 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:69:__node__ 31 | 278 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:125:String 32 | 271 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:73:__node__ 33 | 34 | XML 35 | Time: 5.43590211868286 36 | Memory: 37 | 55050 ./benchmark/../lib/mysql2xxxx/xml.rb:23:String 38 | 28467 ./benchmark/../lib/mysql2xxxx/xml.rb:26:String 39 | 24858 ./benchmark/../lib/mysql2xxxx/xml.rb:23:Float 40 | 12593 ./benchmark/../lib/mysql2xxxx/xml.rb:26:Array 41 | 10000 (eval):4:Array 42 | 7016 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/rational.rb:94:Rational 43 | 6300 ./benchmark/../lib/mysql2xxxx/xml.rb:25:Array 44 | 5251 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:437:Array 45 | 5001 ./benchmark/../lib/mysql2xxxx/xml.rb:23:Hash 46 | 5000 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:754:Date 47 | -------------------------------------------------------------------------------- /test/fixtures/automobile_makes.sql: -------------------------------------------------------------------------------- 1 | -- MySQL dump 10.13 Distrib 5.1.41, for debian-linux-gnu (i486) 2 | -- 3 | -- Host: 127.0.0.1 Database: data1 4 | -- ------------------------------------------------------ 5 | -- Server version 5.1.41-3ubuntu12.8 6 | 7 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 8 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 9 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 10 | /*!40101 SET NAMES utf8 */; 11 | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; 12 | /*!40103 SET TIME_ZONE='+00:00' */; 13 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 14 | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 15 | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 16 | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 17 | 18 | -- 19 | -- Table structure for table `automobile_makes` 20 | -- 21 | 22 | DROP TABLE IF EXISTS `automobile_makes`; 23 | /*!40101 SET @saved_cs_client = @@character_set_client */; 24 | /*!40101 SET character_set_client = utf8 */; 25 | CREATE TABLE `automobile_makes` ( 26 | `name` varchar(255) NOT NULL DEFAULT '', 27 | `fuel_efficiency` float DEFAULT NULL, 28 | `fuel_efficiency_units` varchar(255) DEFAULT NULL, 29 | PRIMARY KEY (`name`) 30 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 31 | /*!40101 SET character_set_client = @saved_cs_client */; 32 | 33 | -- 34 | -- Dumping data for table `automobile_makes` 35 | -- 36 | 37 | LOCK TABLES `automobile_makes` WRITE; 38 | /*!40000 ALTER TABLE `automobile_makes` DISABLE KEYS */; 39 | INSERT INTO `automobile_makes` VALUES ('',NULL,'kilometres_per_litre'),('Acura',9.08129,'kilometres_per_litre'),('Alfa Romeo',10.4075,'kilometres_per_litre'),('Alpina',7.12301,'kilometres_per_litre'),('American Motors',8.83413,'kilometres_per_litre'),('Aston Martin',7.63597,'kilometres_per_litre'),('Audi',8.54408,'kilometres_per_litre'),('Avanti',6.64194,'kilometres_per_litre'),('Bentley',5.05366,'kilometres_per_litre'),('Bertone',12.5756,'kilometres_per_litre'),('Bitter',8.75492,'kilometres_per_litre'),('BMW',10.8585,'kilometres_per_litre'),('Bugatti',4.30568,'kilometres_per_litre'),('Buick',9.02433,'kilometres_per_litre'),('Cadillac',7.75072,'kilometres_per_litre'),('Chevrolet',7.84091,'kilometres_per_litre'),('Chrysler',10.3041,'kilometres_per_litre'),('Citroën',9.30681,'kilometres_per_litre'),('Citroën INC',6.83116,'kilometres_per_litre'),('Daewoo',12.1673,'kilometres_per_litre'),('Daihatsu',17.2183,'kilometres_per_litre'),('DaimlerChrysler',9.98344,'kilometres_per_litre'),('Dodge',7.37358,'kilometres_per_litre'),('Eagle',9.69909,'kilometres_per_litre'),('Excalibur',4.88915,'kilometres_per_litre'),('Ferrari',6.68364,'kilometres_per_litre'),('Fiat',10.5269,'kilometres_per_litre'),('Ford',10.2407,'kilometres_per_litre'),('Geo',11.9565,'kilometres_per_litre'),('GM',10.5065,'kilometres_per_litre'),('GMC',6.88051,'kilometres_per_litre'),('Honda',13.291,'kilometres_per_litre'),('Hummer',6.64142,'kilometres_per_litre'),('Hyundai',13.1387,'kilometres_per_litre'),('IHC',7.35499,'kilometres_per_litre'),('Impco',9.46286,'kilometres_per_litre'),('Infiniti',8.12203,'kilometres_per_litre'),('Isuzu',9.70585,'kilometres_per_litre'),('Jaguar',8.7687,'kilometres_per_litre'),('Jeep',7.01487,'kilometres_per_litre'),('Kia',11.8592,'kilometres_per_litre'),('Laforza',4.87946,'kilometres_per_litre'),('Lamborghini',5.03409,'kilometres_per_litre'),('Land Rover',6.12734,'kilometres_per_litre'),('Lexus',8.45328,'kilometres_per_litre'),('Lincoln',9.05273,'kilometres_per_litre'),('Lotus',11.9396,'kilometres_per_litre'),('Maserati',7.27185,'kilometres_per_litre'),('Maybach',5.47022,'kilometres_per_litre'),('Mazda',12.3846,'kilometres_per_litre'),('Mercedes-Benz',10.0622,'kilometres_per_litre'),('Mercury',7.64315,'kilometres_per_litre'),('Merkur',7.9813,'kilometres_per_litre'),('Mini',12.0537,'kilometres_per_litre'),('Mitsubishi',12.1768,'kilometres_per_litre'),('Morgan',7.62285,'kilometres_per_litre'),('Nissan',11.8682,'kilometres_per_litre'),('Oldsmobile',9.18457,'kilometres_per_litre'),('Panoz',9.88633,'kilometres_per_litre'),('Panther',11.6489,'kilometres_per_litre'),('Peugeot',10.9448,'kilometres_per_litre'),('Pininfarina',12.3193,'kilometres_per_litre'),('Plymouth',9.68965,'kilometres_per_litre'),('Pontiac',9.86449,'kilometres_per_litre'),('Porsche',10.0382,'kilometres_per_litre'),('Quantum',12.6395,'kilometres_per_litre'),('Qvale',7.8845,'kilometres_per_litre'),('Renault',14.6309,'kilometres_per_litre'),('Rolls-Royce',5.09656,'kilometres_per_litre'),('Roush Industries, Inc.',7.66709,'kilometres_per_litre'),('Rover',7.13526,'kilometres_per_litre'),('Saab',10.949,'kilometres_per_litre'),('Saleen',6.91581,'kilometres_per_litre'),('Saturn',10.6349,'kilometres_per_litre'),('Shelby',8.07773,'kilometres_per_litre'),('Spyker',8.27647,'kilometres_per_litre'),('Subaru',12.3556,'kilometres_per_litre'),('Suzuki',12.8985,'kilometres_per_litre'),('TCSTR',5.51797,'kilometres_per_litre'),('Tesla',103.735,'kilometres_per_litre'),('Toyota',12.3622,'kilometres_per_litre'),('TVR',8.80048,'kilometres_per_litre'),('Vector',4.29395,'kilometres_per_litre'),('Vector CORP',3.52924,'kilometres_per_litre'),('Volkswagen',12.4898,'kilometres_per_litre'),('Volvo',10.8427,'kilometres_per_litre'),('Yugo',14.2504,'kilometres_per_litre'); 40 | /*!40000 ALTER TABLE `automobile_makes` ENABLE KEYS */; 41 | UNLOCK TABLES; 42 | /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; 43 | 44 | /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 45 | /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 46 | /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 47 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 48 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 49 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 50 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 51 | 52 | -- Dump completed on 2011-02-08 8:41:18 53 | -------------------------------------------------------------------------------- /benchmark/results/0.0.4-20110314190640.txt: -------------------------------------------------------------------------------- 1 | mysql2xxxx 2 | Version: 0.0.4 3 | Run: Mon Mar 14 19:06:40 -0500 2011 4 | System: Darwin vidalia 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386 5 | 6 | ################################################## 7 | # CSV 8 | ################################################## 9 | Real memory over time (sampled every 0.3 sec): 10 | 0:00.30 13452 11 | 0:00.61 20140 12 | 0:00.91 19476 13 | 0:01.22 20152 14 | 0:01.53 18456 15 | 0:01.84 19632 16 | 0:02.14 20504 17 | Memprof object counts (top 25): 18 | 575 ./benchmark/../lib/mysql2xxxx/writer.rb:40:String 19 | 527 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1798:String 20 | 372 (__FORWARDABLE__):5:__node__ 21 | 279 (__FORWARDABLE__):3:__node__ 22 | 217 (__FORWARDABLE__):1:__node__ 23 | 169 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1852:String 24 | 155 (__FORWARDABLE__):6:__node__ 25 | 120 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/stringio.bundle:0:__node__ 26 | 93 (__FORWARDABLE__):7:__node__ 27 | 84 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1849:String 28 | 62 (__FORWARDABLE__):4:__node__ 29 | 46 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1849:Array 30 | 44 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1091:Hash 31 | 43 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1092:__scope__ 32 | 42 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1852:Method 33 | 42 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1852:MatchData 34 | 42 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1490:String 35 | 41 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/forwardable.rb:148:__node__ 36 | 31 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:758:__node__ 37 | 31 (__FORWARDABLE__):8:__node__ 38 | 31 (__FORWARDABLE__):5:Regexp 39 | 25 ./benchmark/../lib/mysql2xxxx/writer.rb:11:String 40 | 24 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1831:Hash 41 | 24 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1830:Regexp 42 | 24 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1826:String 43 | 44 | ################################################## 45 | # JSON 46 | ################################################## 47 | Real memory over time (sampled every 0.3 sec): 48 | 0:00.31 13736 49 | 0:00.61 17536 50 | 0:00.91 17536 51 | 0:01.19 17536 52 | 0:01.41 17536 53 | 0:01.71 17536 54 | 0:02.02 17536 55 | 0:02.32 17536 56 | 0:02.63 17536 57 | 0:02.93 17536 58 | 0:03.24 17536 59 | 0:03.55 17536 60 | 0:03.85 17536 61 | 0:04.16 17536 62 | 0:04.47 17536 63 | 0:04.79 17536 64 | 0:05.09 17536 65 | 0:05.40 17536 66 | 0:05.71 17536 67 | 0:06.01 17536 68 | 0:06.32 17536 69 | 0:06.62 17536 70 | 0:06.93 17536 71 | 0:07.24 17536 72 | 0:07.55 17536 73 | 0:07.85 17536 74 | 0:08.16 17536 75 | 0:08.46 17536 76 | 0:08.77 17536 77 | 0:09.08 17536 78 | 0:09.38 17536 79 | 0:09.69 17536 80 | 0:10.00 17536 81 | 0:10.30 17536 82 | 0:10.61 17536 83 | Memprof object counts (top 25): 84 | 8360 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:125:String 85 | 6361 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:73:__node__ 86 | 4261 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:235:Array 87 | 4183 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:132:String 88 | 2357 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:247:String 89 | 2191 ./benchmark/../lib/mysql2xxxx/writer.rb:48:String 90 | 2183 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:247:Array 91 | 2080 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:236:Array 92 | 280 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:69:__node__ 93 | 260 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:70:__node__ 94 | 249 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:61:Hash 95 | 170 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/syck.bundle:0:__node__ 96 | 160 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:67:__node__ 97 | 160 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:65:__node__ 98 | 148 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:75:__node__ 99 | 120 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/stringio.bundle:0:__node__ 100 | 119 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:247:__node__ 101 | 117 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/bigdecimal.bundle:0:__node__ 102 | 109 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:237:__node__ 103 | 105 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:68:__node__ 104 | 103 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:235:__node__ 105 | 87 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:41:Array 106 | 86 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:30:ActiveSupport::JSON::Encoding::Encoder 107 | 86 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:236:Hash 108 | 86 ./benchmark/../lib/mysql2xxxx/writer.rb:48:Hash 109 | 110 | ################################################## 111 | # XML 112 | ################################################## 113 | Real memory over time (sampled every 0.3 sec): 114 | 0:00.30 13668 115 | 0:00.61 16952 116 | 0:00.95 16952 117 | 0:01.26 17916 118 | 0:01.56 17532 119 | 0:01.87 17532 120 | 0:02.18 17976 121 | 0:02.41 18556 122 | Memprof object counts (top 25): 123 | 16407 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:16:String 124 | 5455 ./benchmark/../lib/mysql2xxxx/writer.rb:7:Array 125 | 5453 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:16:Array 126 | 5439 ./benchmark/../lib/mysql2xxxx/writer.rb:40:String 127 | 226 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:15:__node__ 128 | 220 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:18:String 129 | 220 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:14:String 130 | 219 ./benchmark/../lib/mysql2xxxx/writer.rb:40:Array 131 | 120 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/stringio.bundle:0:__node__ 132 | 28 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:16:__node__ 133 | 25 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:4:String 134 | 25 ./benchmark/../lib/mysql2xxxx/writer.rb:11:String 135 | 20 ./benchmark/../lib/mysql2xxxx/writer.rb:16:__node__ 136 | 18 ./benchmark/../lib/mysql2xxxx/writer.rb:33:__node__ 137 | 14 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:12:__node__ 138 | 12 ./benchmark/../lib/mysql2xxxx/writer.rb:11:__node__ 139 | 12 ./benchmark/../lib/mysql2xxxx/config.rb:32:__node__ 140 | 12 ./benchmark/../lib/mysql2xxxx/config.rb:28:__node__ 141 | 12 ./benchmark/../lib/mysql2xxxx/config.rb:24:__node__ 142 | 12 ./benchmark/../lib/mysql2xxxx/config.rb:20:__node__ 143 | 11 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:4:__node__ 144 | 10 ./benchmark/../lib/mysql2xxxx/config.rb:36:__node__ 145 | 9 ./benchmark/../lib/mysql2xxxx/writer.rb:26:__node__ 146 | 8 ./benchmark/../lib/mysql2xxxx/writer.rb:73:__node__ 147 | 8 ./benchmark/../lib/mysql2xxxx/writer.rb:32:__node__ 148 | -------------------------------------------------------------------------------- /benchmark/results/0.0.4-20110315110535-ruby18.txt: -------------------------------------------------------------------------------- 1 | mysql2xxxx 2 | Version: 0.0.4 3 | Run: Tue Mar 15 11:05:35 -0500 2011 4 | System: Darwin vidalia 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386 5 | 6 | ################################################## 7 | # CSV 8 | ################################################## 9 | Real memory over time (sampled every 0.3 sec): 10 | 0:00.30 11672 11 | 0:00.60 19936 12 | 0:00.91 19408 13 | 0:01.29 20460 14 | 0:01.56 20460 15 | 0:01.87 20460 16 | 0:02.17 20460 17 | Memprof object counts (top 25): 18 | 5044 ./benchmark/../lib/mysql2xxxx/writer.rb:43:String 19 | 5019 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1798:String 20 | 1617 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1852:String 21 | 808 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1849:String 22 | 408 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1849:Array 23 | 406 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1092:__scope__ 24 | 405 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1091:Hash 25 | 404 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1852:Method 26 | 404 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1852:MatchData 27 | 404 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1490:String 28 | 372 (__FORWARDABLE__):5:__node__ 29 | 279 (__FORWARDABLE__):3:__node__ 30 | 217 (__FORWARDABLE__):1:__node__ 31 | 206 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1092:String 32 | 205 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1826:String 33 | 205 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1734:String 34 | 205 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1423:Hash 35 | 204 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:2004:Hash 36 | 204 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1831:Hash 37 | 204 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1830:Regexp 38 | 204 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1826:Regexp 39 | 204 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1823:String 40 | 204 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1823:Regexp 41 | 204 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1820:Regexp 42 | 204 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1791:Proc 43 | 44 | ################################################## 45 | # JSON 46 | ################################################## 47 | Real memory over time (sampled every 0.3 sec): 48 | 0:00.30 12364 49 | 0:00.61 17128 50 | 0:00.94 17536 51 | 0:01.24 17536 52 | 0:01.54 17536 53 | 0:01.83 17536 54 | 0:02.12 17536 55 | 0:02.41 17536 56 | 0:02.70 17536 57 | 0:02.93 17536 58 | 0:03.06 17536 59 | 0:03.37 17536 60 | 0:03.68 17536 61 | 0:03.98 17536 62 | 0:04.28 17536 63 | 0:04.58 17536 64 | 0:04.88 17536 65 | 0:05.18 17536 66 | 0:05.48 17536 67 | 0:05.79 17536 68 | 0:06.10 17536 69 | 0:06.40 17536 70 | 0:06.71 17536 71 | 0:07.02 17536 72 | 0:07.36 17536 73 | 0:07.67 17536 74 | 0:07.97 17536 75 | 0:08.28 17536 76 | 0:08.59 17536 77 | 0:08.89 17536 78 | 0:09.20 17536 79 | 0:09.52 17536 80 | 0:09.82 17536 81 | 0:10.13 17536 82 | 0:10.44 17536 83 | 0:10.74 17536 84 | 0:11.04 17536 85 | Memprof object counts (top 25): 86 | 3792 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:125:String 87 | 2882 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:73:__node__ 88 | 1922 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:235:Array 89 | 1898 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:132:String 90 | 1094 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:247:String 91 | 1022 ./benchmark/../lib/mysql2xxxx/writer.rb:51:String 92 | 989 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:247:Array 93 | 950 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:236:Array 94 | 280 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:69:__node__ 95 | 260 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:70:__node__ 96 | 170 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/syck.bundle:0:__node__ 97 | 160 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:67:__node__ 98 | 160 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:65:__node__ 99 | 148 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:75:__node__ 100 | 120 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/stringio.bundle:0:__node__ 101 | 117 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/bigdecimal.bundle:0:__node__ 102 | 114 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:61:Hash 103 | 105 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:68:__node__ 104 | 73 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:247:__node__ 105 | 64 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/deprecation/proxy_wrappers.rb:13:__node__ 106 | 63 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:237:__node__ 107 | 60 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:72:__node__ 108 | 60 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:71:__node__ 109 | 60 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:64:__node__ 110 | 60 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:63:__node__ 111 | 112 | ################################################## 113 | # XML 114 | ################################################## 115 | Real memory over time (sampled every 0.3 sec): 116 | 0:00.29 10920 117 | 0:00.54 18088 118 | 0:00.83 17836 119 | 0:01.12 17496 120 | 0:01.43 17836 121 | 0:01.73 18520 122 | 0:02.03 17496 123 | 0:02.33 18520 124 | Memprof object counts (top 25): 125 | 7638 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:16:String 126 | 2539 ./benchmark/../lib/mysql2xxxx/writer.rb:43:String 127 | 2538 ./benchmark/../lib/mysql2xxxx/writer.rb:7:Array 128 | 2537 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:16:Array 129 | 120 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/stringio.bundle:0:__node__ 130 | 109 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:15:__node__ 131 | 103 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:18:String 132 | 103 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:14:String 133 | 102 ./benchmark/../lib/mysql2xxxx/writer.rb:43:Array 134 | 28 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:16:__node__ 135 | 25 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:4:String 136 | 25 ./benchmark/../lib/mysql2xxxx/writer.rb:11:String 137 | 22 ./benchmark/../lib/mysql2xxxx/writer.rb:35:__node__ 138 | 20 ./benchmark/../lib/mysql2xxxx/writer.rb:16:__node__ 139 | 14 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:12:__node__ 140 | 14 ./benchmark/../lib/mysql2xxxx/config.rb:18:__node__ 141 | 12 ./benchmark/../lib/mysql2xxxx/writer.rb:11:__node__ 142 | 12 ./benchmark/../lib/mysql2xxxx/config.rb:36:__node__ 143 | 12 ./benchmark/../lib/mysql2xxxx/config.rb:32:__node__ 144 | 12 ./benchmark/../lib/mysql2xxxx/config.rb:14:__node__ 145 | 12 ./benchmark/../lib/mysql2xxxx/config.rb:10:__node__ 146 | 11 ./benchmark/../lib/mysql2xxxx/writer/xml.rb:4:__node__ 147 | 10 ./benchmark/../lib/mysql2xxxx/writer.rb:34:__node__ 148 | 10 ./benchmark/../lib/mysql2xxxx/config.rb:40:__node__ 149 | 9 ./benchmark/../lib/mysql2xxxx/writer.rb:26:__node__ 150 | -------------------------------------------------------------------------------- /benchmark/results/0.0.3-20110314160922.txt: -------------------------------------------------------------------------------- 1 | mysql2xxxx 2 | Version: 0.0.3 3 | Run: Mon Mar 14 16:09:22 -0500 2011 4 | System: Darwin vidalia 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386 5 | 6 | ################################################## 7 | # CSV 8 | ################################################## 9 | Real memory over time (sampled every 0.3 sec): 10 | 0:00.30 11204 11 | 0:00.56 20488 12 | 0:00.86 20876 13 | 0:01.17 30580 14 | 0:01.48 32684 15 | 0:01.79 33980 16 | 0:02.09 35268 17 | 0:02.39 36892 18 | 0:02.70 38004 19 | 0:03.01 39120 20 | 0:03.31 40264 21 | 0:03.62 41184 22 | 0:03.93 41292 23 | 0:04.24 41472 24 | 0:04.55 41736 25 | 0:04.85 49796 26 | 0:05.16 53260 27 | Memprof object counts (top 25): 28 | 55050 ./benchmark/../lib/mysql2xxxx/csv.rb:25:String 29 | 24858 ./benchmark/../lib/mysql2xxxx/csv.rb:25:Float 30 | 10000 (eval):4:Array 31 | 5423 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/rational.rb:94:Rational 32 | 5052 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:437:Array 33 | 5001 ./benchmark/../lib/mysql2xxxx/csv.rb:25:Hash 34 | 5000 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:754:Date 35 | 1320 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1798:String 36 | 1301 ./benchmark/../lib/mysql2xxxx/csv.rb:14:Array 37 | 1300 ./benchmark/../lib/mysql2xxxx/csv.rb:30:__varmap__ 38 | 682 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1795:String 39 | 421 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1852:String 40 | 372 (__FORWARDABLE__):5:__node__ 41 | 279 (__FORWARDABLE__):3:__node__ 42 | 217 (__FORWARDABLE__):1:__node__ 43 | 211 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1849:String 44 | 210 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:428:Float 45 | 210 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:426:Float 46 | 210 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:423:Float 47 | 210 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:422:Float 48 | 155 (__FORWARDABLE__):6:__node__ 49 | 120 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/stringio.bundle:0:__node__ 50 | 108 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:1383:String 51 | 108 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1849:Array 52 | 106 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/fastercsv-1.5.4/lib/faster_csv.rb:1852:Method 53 | 54 | ################################################## 55 | # JSON 56 | ################################################## 57 | Real memory over time (sampled every 0.3 sec): 58 | 0:00.30 11560 59 | 0:00.56 19068 60 | 0:00.73 19508 61 | 0:01.04 19508 62 | 0:01.35 19508 63 | 0:01.65 23616 64 | 0:01.96 27984 65 | 0:02.27 28868 66 | 0:02.58 28896 67 | 0:02.89 29900 68 | 0:03.19 29904 69 | 0:03.50 29904 70 | 0:03.80 30352 71 | 0:04.11 31188 72 | 0:04.42 31264 73 | 0:04.72 32216 74 | 0:05.03 32216 75 | 0:05.34 32492 76 | 0:05.65 33240 77 | 0:05.95 33240 78 | 0:06.26 33996 79 | 0:06.56 34268 80 | 0:06.87 34268 81 | 0:07.18 34508 82 | 0:07.48 35292 83 | 0:07.79 35328 84 | 0:08.10 35328 85 | 0:08.40 36320 86 | 0:08.71 36320 87 | 0:09.02 36548 88 | 0:09.32 37348 89 | 0:09.63 37368 90 | 0:09.94 37652 91 | 0:10.25 38372 92 | 0:10.55 38372 93 | 0:10.86 38376 94 | 0:11.17 38376 95 | 0:11.47 38516 96 | 0:11.78 39400 97 | 0:12.08 39400 98 | 0:12.38 39404 99 | 0:12.69 39404 100 | 0:13.00 39404 101 | 0:13.31 46788 102 | 0:13.61 48948 103 | 0:13.92 48948 104 | 0:14.22 49860 105 | 0:14.53 49860 106 | 0:14.84 49860 107 | 0:15.15 50176 108 | 0:15.46 50828 109 | 0:15.76 50828 110 | 0:16.07 50996 111 | 0:16.37 50996 112 | Memprof object counts (top 25): 113 | 55050 ./benchmark/../lib/mysql2xxxx/json.rb:26:String 114 | 24858 ./benchmark/../lib/mysql2xxxx/json.rb:26:Float 115 | 10000 (eval):4:Array 116 | 5025 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/rational.rb:94:Rational 117 | 5003 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:437:Array 118 | 5001 ./benchmark/../lib/mysql2xxxx/json.rb:26:Hash 119 | 5000 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:754:Date 120 | 280 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:69:__node__ 121 | 278 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:125:String 122 | 271 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:73:__node__ 123 | 260 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:70:__node__ 124 | 181 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:235:Array 125 | 170 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/syck.bundle:0:__node__ 126 | 160 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:67:__node__ 127 | 160 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:65:__node__ 128 | 148 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:75:__node__ 129 | 140 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:132:String 130 | 120 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.6.0/stringio.bundle:0:__node__ 131 | 117 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:247:String 132 | 105 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:68:__node__ 133 | 96 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:247:Array 134 | 79 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/json/encoding.rb:236:Array 135 | 64 /Users/seamus/.rvm/gems/ruby-1.8.7-p334/gems/activesupport-3.0.5/lib/active_support/deprecation/proxy_wrappers.rb:13:__node__ 136 | 60 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:72:__node__ 137 | 60 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/yaml/tag.rb:71:__node__ 138 | 139 | ################################################## 140 | # XML 141 | ################################################## 142 | Real memory over time (sampled every 0.3 sec): 143 | 0:00.30 11168 144 | 0:00.55 20512 145 | 0:00.83 20540 146 | 0:01.14 24940 147 | 0:01.45 31596 148 | 0:01.75 33208 149 | 0:02.06 34668 150 | 0:02.36 35856 151 | 0:02.66 36800 152 | 0:02.97 37756 153 | 0:03.28 39368 154 | 0:03.58 40392 155 | 0:03.89 41420 156 | 0:04.19 41420 157 | 0:04.50 41424 158 | 0:04.79 48808 159 | 0:05.01 51660 160 | Memprof object counts (top 25): 161 | 55050 ./benchmark/../lib/mysql2xxxx/xml.rb:23:String 162 | 28467 ./benchmark/../lib/mysql2xxxx/xml.rb:26:String 163 | 24858 ./benchmark/../lib/mysql2xxxx/xml.rb:23:Float 164 | 12593 ./benchmark/../lib/mysql2xxxx/xml.rb:26:Array 165 | 10000 (eval):4:Array 166 | 7016 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/rational.rb:94:Rational 167 | 6300 ./benchmark/../lib/mysql2xxxx/xml.rb:25:Array 168 | 5251 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:437:Array 169 | 5001 ./benchmark/../lib/mysql2xxxx/xml.rb:23:Hash 170 | 5000 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:754:Date 171 | 1007 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:423:Float 172 | 1006 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:428:Float 173 | 1006 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:426:Float 174 | 1006 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:422:Float 175 | 504 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:1383:String 176 | 504 ./benchmark/../lib/mysql2xxxx/xml.rb:23:__varmap__ 177 | 503 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:429:Float 178 | 503 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:428:Array 179 | 503 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:427:Float 180 | 503 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:423:Array 181 | 502 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:402:Float 182 | 502 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/date.rb:401:Float 183 | 254 ./benchmark/../lib/mysql2xxxx/xml.rb:28:String 184 | 253 ./benchmark/../lib/mysql2xxxx/xml.rb:24:String 185 | 252 /Users/seamus/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/rational.rb:337:Array 186 | -------------------------------------------------------------------------------- /test/fixtures/automobile_make_years.sql: -------------------------------------------------------------------------------- 1 | -- MySQL dump 10.13 Distrib 5.1.41, for debian-linux-gnu (i486) 2 | -- 3 | -- Host: 127.0.0.1 Database: data1 4 | -- ------------------------------------------------------ 5 | -- Server version 5.1.41-3ubuntu12.8 6 | 7 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 8 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 9 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 10 | /*!40101 SET NAMES utf8 */; 11 | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; 12 | /*!40103 SET TIME_ZONE='+00:00' */; 13 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 14 | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 15 | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 16 | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 17 | 18 | -- 19 | -- Table structure for table `automobile_make_years` 20 | -- 21 | 22 | DROP TABLE IF EXISTS `automobile_make_years`; 23 | /*!40101 SET @saved_cs_client = @@character_set_client */; 24 | /*!40101 SET character_set_client = utf8 */; 25 | CREATE TABLE `automobile_make_years` ( 26 | `name` varchar(255) NOT NULL DEFAULT '', 27 | `make_name` varchar(255) DEFAULT NULL, 28 | `year` int(11) DEFAULT NULL, 29 | `fuel_efficiency` float DEFAULT NULL, 30 | `fuel_efficiency_units` varchar(255) DEFAULT NULL, 31 | `volume` int(11) DEFAULT NULL, 32 | PRIMARY KEY (`name`) 33 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 34 | /*!40101 SET character_set_client = @saved_cs_client */; 35 | 36 | -- 37 | -- Dumping data for table `automobile_make_years` 38 | -- 39 | 40 | LOCK TABLES `automobile_make_years` WRITE; 41 | /*!40000 ALTER TABLE `automobile_make_years` DISABLE KEYS */; 42 | INSERT INTO `automobile_make_years` VALUES (' 2007','',2007,NULL,'kilometres_per_litre',NULL),('Acura 1987','Acura',1987,8.34838,'kilometres_per_litre',NULL),('Acura 1988','Acura',1988,9.36932,'kilometres_per_litre',NULL),('Acura 1989','Acura',1989,9.30246,'kilometres_per_litre',NULL),('Acura 1990','Acura',1990,8.84169,'kilometres_per_litre',NULL),('Acura 1991','Acura',1991,8.70019,'kilometres_per_litre',NULL),('Acura 1992','Acura',1992,8.87257,'kilometres_per_litre',NULL),('Acura 1993','Acura',1993,9.02087,'kilometres_per_litre',NULL),('Acura 1994','Acura',1994,8.94701,'kilometres_per_litre',NULL),('Acura 1995','Acura',1995,8.934,'kilometres_per_litre',NULL),('Acura 1996','Acura',1996,8.63101,'kilometres_per_litre',NULL),('Acura 1997','Acura',1997,9.07166,'kilometres_per_litre',NULL),('Acura 1998','Acura',1998,9.09882,'kilometres_per_litre',NULL),('Acura 1999','Acura',1999,9.18251,'kilometres_per_litre',NULL),('Acura 2000','Acura',2000,9.19998,'kilometres_per_litre',NULL),('Acura 2001','Acura',2001,9.02458,'kilometres_per_litre',NULL),('Acura 2002','Acura',2002,9.15608,'kilometres_per_litre',NULL),('Acura 2003','Acura',2003,9.17192,'kilometres_per_litre',NULL),('Acura 2004','Acura',2004,9.43878,'kilometres_per_litre',NULL),('Acura 2005','Acura',2005,9.39719,'kilometres_per_litre',NULL),('Acura 2006','Acura',2006,9.73614,'kilometres_per_litre',NULL),('Acura 2007','Acura',2007,8.9742,'kilometres_per_litre',NULL),('Acura 2008','Acura',2008,8.9742,'kilometres_per_litre',NULL),('Acura 2009','Acura',2009,8.97793,'kilometres_per_litre',NULL),('Acura 2010','Acura',2010,9.06529,'kilometres_per_litre',NULL),('Alfa Romeo 1985','Alfa Romeo',1985,11.7765,'kilometres_per_litre',2768),('Alfa Romeo 1986','Alfa Romeo',1986,11.8615,'kilometres_per_litre',5766),('Alfa Romeo 1987','Alfa Romeo',1987,8.39089,'kilometres_per_litre',NULL),('Alfa Romeo 1988','Alfa Romeo',1988,8.37409,'kilometres_per_litre',NULL),('Alfa Romeo 1989','Alfa Romeo',1989,8.37409,'kilometres_per_litre',NULL),('Alfa Romeo 1990','Alfa Romeo',1990,10.0813,'kilometres_per_litre',NULL),('Alfa Romeo 1991','Alfa Romeo',1991,8.75751,'kilometres_per_litre',NULL),('Alfa Romeo 1992','Alfa Romeo',1992,8.75751,'kilometres_per_litre',NULL),('Alfa Romeo 1993','Alfa Romeo',1993,8.75751,'kilometres_per_litre',NULL),('Alfa Romeo 1994','Alfa Romeo',1994,8.27945,'kilometres_per_litre',NULL),('Alfa Romeo 1995','Alfa Romeo',1995,7.53643,'kilometres_per_litre',NULL),('Alpina 2003','Alpina',2003,6.77638,'kilometres_per_litre',NULL),('Alpina 2007','Alpina',2007,7.33211,'kilometres_per_litre',NULL),('Alpina 2008','Alpina',2008,7.26053,'kilometres_per_litre',NULL),('American Motors 1985','American Motors',1985,8.5879,'kilometres_per_litre',183044),('American Motors 1986','American Motors',1986,10.2245,'kilometres_per_litre',262535),('American Motors 1987','American Motors',1987,7.11617,'kilometres_per_litre',NULL),('Aston Martin 1985','Aston Martin',1985,4.46401,'kilometres_per_litre',51),('Aston Martin 1988','Aston Martin',1988,3.74863,'kilometres_per_litre',NULL),('Aston Martin 1989','Aston Martin',1989,3.74863,'kilometres_per_litre',NULL),('Aston Martin 1991','Aston Martin',1991,5.46264,'kilometres_per_litre',NULL),('Aston Martin 1992','Aston Martin',1992,5.46264,'kilometres_per_litre',NULL),('Aston Martin 1997','Aston Martin',1997,6.59409,'kilometres_per_litre',NULL),('Aston Martin 1998','Aston Martin',1998,6.58005,'kilometres_per_litre',NULL),('Aston Martin 2000','Aston Martin',2000,5.5484,'kilometres_per_litre',NULL),('Aston Martin 2002','Aston Martin',2002,6.01136,'kilometres_per_litre',NULL),('Aston Martin 2003','Aston Martin',2003,5.55556,'kilometres_per_litre',NULL),('Aston Martin 2004','Aston Martin',2004,5.98942,'kilometres_per_litre',NULL),('Aston Martin 2005','Aston Martin',2005,5.58412,'kilometres_per_litre',NULL),('Aston Martin 2006','Aston Martin',2006,5.67543,'kilometres_per_litre',NULL),('Aston Martin 2007','Aston Martin',2007,7.56756,'kilometres_per_litre',2162),('Aston Martin 2008','Aston Martin',2008,8.07773,'kilometres_per_litre',1370),('Aston Martin 2009','Aston Martin',2009,7.90767,'kilometres_per_litre',1323),('Aston Martin 2010','Aston Martin',2010,6.45193,'kilometres_per_litre',NULL),('Audi 1985','Audi',1985,8.28588,'kilometres_per_litre',NULL),('Audi 1986','Audi',1986,8.35312,'kilometres_per_litre',NULL),('Audi 1987','Audi',1987,8.2502,'kilometres_per_litre',NULL),('Audi 1988','Audi',1988,8.36973,'kilometres_per_litre',NULL),('Audi 1989','Audi',1989,8.37194,'kilometres_per_litre',NULL),('Audi 1990','Audi',1990,8.05018,'kilometres_per_litre',NULL),('Audi 1991','Audi',1991,7.86161,'kilometres_per_litre',NULL),('Audi 1992','Audi',1992,8.02308,'kilometres_per_litre',NULL),('Audi 1993','Audi',1993,8.06636,'kilometres_per_litre',NULL),('Audi 1994','Audi',1994,8.0465,'kilometres_per_litre',NULL),('Audi 1995','Audi',1995,8.25622,'kilometres_per_litre',NULL),('Audi 1996','Audi',1996,8.47191,'kilometres_per_litre',NULL),('Audi 1997','Audi',1997,8.56554,'kilometres_per_litre',NULL),('Audi 1998','Audi',1998,8.79215,'kilometres_per_litre',NULL),('Audi 1999','Audi',1999,8.81491,'kilometres_per_litre',NULL),('Audi 2000','Audi',2000,8.57025,'kilometres_per_litre',NULL),('Audi 2001','Audi',2001,8.49805,'kilometres_per_litre',NULL),('Audi 2002','Audi',2002,8.42285,'kilometres_per_litre',NULL),('Audi 2003','Audi',2003,8.6804,'kilometres_per_litre',NULL),('Audi 2004','Audi',2004,8.58607,'kilometres_per_litre',NULL),('Audi 2005','Audi',2005,8.5634,'kilometres_per_litre',NULL),('Audi 2006','Audi',2006,8.79818,'kilometres_per_litre',NULL),('Audi 2007','Audi',2007,8.54765,'kilometres_per_litre',NULL),('Audi 2008','Audi',2008,8.5454,'kilometres_per_litre',NULL),('Audi 2009','Audi',2009,8.88585,'kilometres_per_litre',NULL),('Audi 2010','Audi',2010,9.10484,'kilometres_per_litre',NULL),('Bentley 1987','Bentley',1987,3.8603,'kilometres_per_litre',NULL),('Bentley 1988','Bentley',1988,4.01405,'kilometres_per_litre',NULL),('Bentley 1989','Bentley',1989,4.31996,'kilometres_per_litre',NULL),('Bentley 1990','Bentley',1990,4.59816,'kilometres_per_litre',NULL),('Bentley 1991','Bentley',1991,4.53696,'kilometres_per_litre',NULL),('Bentley 1992','Bentley',1992,4.96316,'kilometres_per_litre',NULL),('Bentley 1993','Bentley',1993,5.00501,'kilometres_per_litre',NULL),('Bentley 1994','Bentley',1994,4.95574,'kilometres_per_litre',NULL),('Bentley 1995','Bentley',1995,4.92288,'kilometres_per_litre',NULL),('Bentley 1996','Bentley',1996,5.2131,'kilometres_per_litre',NULL),('Bentley 1997','Bentley',1997,5.18952,'kilometres_per_litre',NULL),('Bentley 1998','Bentley',1998,5.17168,'kilometres_per_litre',NULL),('Bentley 1999','Bentley',1999,5.20998,'kilometres_per_litre',NULL),('Bentley 2000','Bentley',2000,5.26035,'kilometres_per_litre',NULL),('Bentley 2001','Bentley',2001,5.23761,'kilometres_per_litre',NULL),('Bentley 2002','Bentley',2002,4.83358,'kilometres_per_litre',NULL),('Bentley 2003','Bentley',2003,5.07012,'kilometres_per_litre',NULL),('Bentley 2004','Bentley',2004,5.0712,'kilometres_per_litre',NULL),('Bentley 2005','Bentley',2005,5.0712,'kilometres_per_litre',NULL),('Bentley 2006','Bentley',2006,5.22575,'kilometres_per_litre',NULL),('Bentley 2007','Bentley',2007,5.36942,'kilometres_per_litre',NULL),('Bentley 2008','Bentley',2008,5.38375,'kilometres_per_litre',NULL),('Bentley 2009','Bentley',2009,5.33494,'kilometres_per_litre',NULL),('Bentley 2010','Bentley',2010,5.5679,'kilometres_per_litre',NULL),('Bertone 1985','Bertone',1985,12.6693,'kilometres_per_litre',1310),('Bertone 1986','Bertone',1986,12.4992,'kilometres_per_litre',2096),('Bertone 1987','Bertone',1987,12.5417,'kilometres_per_litre',1482),('Bertone 1988','Bertone',1988,12.4992,'kilometres_per_litre',209),('Bertone 1989','Bertone',1989,9.70394,'kilometres_per_litre',NULL),('Bitter 1986','Bitter',1986,8.67293,'kilometres_per_litre',3),('Bitter 1987','Bitter',1987,6.83514,'kilometres_per_litre',NULL),('BMW 1985','BMW',1985,11.2238,'kilometres_per_litre',86011),('BMW 1986','BMW',1986,10.9262,'kilometres_per_litre',85053),('BMW 1987','BMW',1987,10.5861,'kilometres_per_litre',93168),('BMW 1988','BMW',1988,9.22562,'kilometres_per_litre',76332),('BMW 1989','BMW',1989,9.43819,'kilometres_per_litre',69412),('BMW 1990','BMW',1990,9.43819,'kilometres_per_litre',56144),('BMW 1991','BMW',1991,9.86333,'kilometres_per_litre',52322),('BMW 1992','BMW',1992,10.2034,'kilometres_per_litre',73650),('BMW 1993','BMW',1993,10.7136,'kilometres_per_litre',64584),('BMW 1994','BMW',1994,10.6711,'kilometres_per_litre',84501),('BMW 1995','BMW',1995,10.7561,'kilometres_per_litre',119423),('BMW 1996','BMW',1996,11.6489,'kilometres_per_litre',57968),('BMW 1997','BMW',1997,10.9262,'kilometres_per_litre',131499),('BMW 1998','BMW',1998,10.7986,'kilometres_per_litre',119927),('BMW 1999','BMW',1999,10.7986,'kilometres_per_litre',113829),('BMW 2000','BMW',2000,10.4501,'kilometres_per_litre',183357),('BMW 2001','BMW',2001,10.1075,'kilometres_per_litre',258068),('BMW 2002','BMW',2002,10.6916,'kilometres_per_litre',237722),('BMW 2003','BMW',2003,10.9339,'kilometres_per_litre',273728),('BMW 2004','BMW',2004,10.7419,'kilometres_per_litre',294840),('BMW 2005','BMW',2005,10.8652,'kilometres_per_litre',234840),('BMW 2006','BMW',2006,11.1425,'kilometres_per_litre',367068),('BMW 2007','BMW',2007,11.4393,'kilometres_per_litre',330061),('BMW 2008','BMW',2008,11.3167,'kilometres_per_litre',353120),('BMW 2009','BMW',2009,11.9192,'kilometres_per_litre',220586),('BMW 2010','BMW',2010,8.35329,'kilometres_per_litre',NULL),('Bugatti 2008','Bugatti',2008,4.30568,'kilometres_per_litre',NULL),('Bugatti 2010','Bugatti',2010,4.30568,'kilometres_per_litre',NULL),('Buick 1985','Buick',1985,9.2567,'kilometres_per_litre',NULL),('Buick 1986','Buick',1986,9.4289,'kilometres_per_litre',NULL),('Buick 1987','Buick',1987,9.42376,'kilometres_per_litre',NULL),('Buick 1988','Buick',1988,9.99394,'kilometres_per_litre',NULL),('Buick 1989','Buick',1989,9.6265,'kilometres_per_litre',NULL),('Buick 1990','Buick',1990,8.99891,'kilometres_per_litre',NULL),('Buick 1991','Buick',1991,8.95796,'kilometres_per_litre',NULL),('Buick 1992','Buick',1992,8.67479,'kilometres_per_litre',NULL),('Buick 1993','Buick',1993,8.91575,'kilometres_per_litre',NULL),('Buick 1994','Buick',1994,9.0409,'kilometres_per_litre',NULL),('Buick 1995','Buick',1995,8.92048,'kilometres_per_litre',NULL),('Buick 1996','Buick',1996,9.17094,'kilometres_per_litre',NULL),('Buick 1997','Buick',1997,9.13288,'kilometres_per_litre',NULL),('Buick 1998','Buick',1998,9.05824,'kilometres_per_litre',NULL),('Buick 1999','Buick',1999,8.88982,'kilometres_per_litre',NULL),('Buick 2000','Buick',2000,9.03072,'kilometres_per_litre',NULL),('Buick 2001','Buick',2001,9.11168,'kilometres_per_litre',NULL),('Buick 2002','Buick',2002,8.82328,'kilometres_per_litre',NULL),('Buick 2003','Buick',2003,8.80555,'kilometres_per_litre',NULL),('Buick 2004','Buick',2004,8.28866,'kilometres_per_litre',NULL),('Buick 2005','Buick',2005,8.26559,'kilometres_per_litre',NULL),('Buick 2006','Buick',2006,8.13605,'kilometres_per_litre',NULL),('Buick 2007','Buick',2007,7.94506,'kilometres_per_litre',NULL),('Buick 2008','Buick',2008,8.54263,'kilometres_per_litre',NULL),('Buick 2009','Buick',2009,8.44072,'kilometres_per_litre',NULL),('Buick 2010','Buick',2010,8.83082,'kilometres_per_litre',NULL),('Cadillac 1985','Cadillac',1985,8.61474,'kilometres_per_litre',NULL),('Cadillac 1986','Cadillac',1986,8.47976,'kilometres_per_litre',NULL),('Cadillac 1987','Cadillac',1987,8.72171,'kilometres_per_litre',NULL),('Cadillac 1988','Cadillac',1988,7.99688,'kilometres_per_litre',NULL),('Cadillac 1989','Cadillac',1989,7.79431,'kilometres_per_litre',NULL),('Cadillac 1990','Cadillac',1990,7.5489,'kilometres_per_litre',NULL),('Cadillac 1991','Cadillac',1991,7.56159,'kilometres_per_litre',NULL),('Cadillac 1992','Cadillac',1992,7.59681,'kilometres_per_litre',NULL),('Cadillac 1993','Cadillac',1993,7.63888,'kilometres_per_litre',NULL),('Cadillac 1994','Cadillac',1994,7.88412,'kilometres_per_litre',NULL),('Cadillac 1995','Cadillac',1995,7.84023,'kilometres_per_litre',NULL),('Cadillac 1996','Cadillac',1996,8.15049,'kilometres_per_litre',NULL),('Cadillac 1997','Cadillac',1997,8.17456,'kilometres_per_litre',NULL),('Cadillac 1998','Cadillac',1998,7.61951,'kilometres_per_litre',NULL),('Cadillac 1999','Cadillac',1999,7.77513,'kilometres_per_litre',NULL),('Cadillac 2000','Cadillac',2000,7.79294,'kilometres_per_litre',NULL),('Cadillac 2001','Cadillac',2001,8.22146,'kilometres_per_litre',NULL),('Cadillac 2002','Cadillac',2002,6.97644,'kilometres_per_litre',NULL),('Cadillac 2003','Cadillac',2003,7.00719,'kilometres_per_litre',NULL),('Cadillac 2004','Cadillac',2004,7.40747,'kilometres_per_litre',NULL),('Cadillac 2005','Cadillac',2005,7.3177,'kilometres_per_litre',NULL),('Cadillac 2006','Cadillac',2006,7.36042,'kilometres_per_litre',NULL),('Cadillac 2007','Cadillac',2007,7.54844,'kilometres_per_litre',NULL),('Cadillac 2008','Cadillac',2008,7.77944,'kilometres_per_litre',NULL),('Cadillac 2009','Cadillac',2009,7.54509,'kilometres_per_litre',NULL),('Cadillac 2010','Cadillac',2010,8.34744,'kilometres_per_litre',NULL),('Chevrolet 1985','Chevrolet',1985,8.33828,'kilometres_per_litre',NULL),('Chevrolet 1986','Chevrolet',1986,8.07426,'kilometres_per_litre',NULL),('Chevrolet 1987','Chevrolet',1987,8.13302,'kilometres_per_litre',NULL),('Chevrolet 1988','Chevrolet',1988,8.09103,'kilometres_per_litre',NULL),('Chevrolet 1989','Chevrolet',1989,7.69617,'kilometres_per_litre',NULL),('Chevrolet 1990','Chevrolet',1990,7.63296,'kilometres_per_litre',NULL),('Chevrolet 1991','Chevrolet',1991,7.59696,'kilometres_per_litre',NULL),('Chevrolet 1992','Chevrolet',1992,7.62239,'kilometres_per_litre',NULL),('Chevrolet 1993','Chevrolet',1993,7.43941,'kilometres_per_litre',NULL),('Chevrolet 1994','Chevrolet',1994,7.55822,'kilometres_per_litre',NULL),('Chevrolet 1995','Chevrolet',1995,7.28468,'kilometres_per_litre',NULL),('Chevrolet 1996','Chevrolet',1996,7.71837,'kilometres_per_litre',NULL),('Chevrolet 1997','Chevrolet',1997,7.52895,'kilometres_per_litre',NULL),('Chevrolet 1998','Chevrolet',1998,8.16838,'kilometres_per_litre',NULL),('Chevrolet 1999','Chevrolet',1999,8.2729,'kilometres_per_litre',NULL),('Chevrolet 2000','Chevrolet',2000,8.34193,'kilometres_per_litre',NULL),('Chevrolet 2001','Chevrolet',2001,8.1575,'kilometres_per_litre',NULL),('Chevrolet 2002','Chevrolet',2002,7.86773,'kilometres_per_litre',NULL),('Chevrolet 2003','Chevrolet',2003,6.95567,'kilometres_per_litre',NULL),('Chevrolet 2004','Chevrolet',2004,7.2689,'kilometres_per_litre',NULL),('Chevrolet 2005','Chevrolet',2005,7.61449,'kilometres_per_litre',NULL),('Chevrolet 2006','Chevrolet',2006,7.79201,'kilometres_per_litre',NULL),('Chevrolet 2007','Chevrolet',2007,7.68122,'kilometres_per_litre',NULL),('Chevrolet 2008','Chevrolet',2008,7.91521,'kilometres_per_litre',NULL),('Chevrolet 2009','Chevrolet',2009,7.83341,'kilometres_per_litre',NULL),('Chevrolet 2010','Chevrolet',2010,9.17611,'kilometres_per_litre',NULL),('Chrysler 1985','Chrysler',1985,10.8997,'kilometres_per_litre',1751347),('Chrysler 1986','Chrysler',1986,11.1244,'kilometres_per_litre',1584253),('Chrysler 1987','Chrysler',1987,10.7695,'kilometres_per_litre',2261204),('Chrysler 1988','Chrysler',1988,10.784,'kilometres_per_litre',2108091),('Chrysler 1989','Chrysler',1989,10.5302,'kilometres_per_litre',2046618),('Chrysler 1990','Chrysler',1990,10.3789,'kilometres_per_litre',1648822),('Chrysler 1991','Chrysler',1991,10.4916,'kilometres_per_litre',1428274),('Chrysler 1992','Chrysler',1992,10.2858,'kilometres_per_litre',1475112),('Chrysler 1993','Chrysler',1993,10.2536,'kilometres_per_litre',1871867),('Chrysler 1994','Chrysler',1994,9.63882,'kilometres_per_litre',2028421),('Chrysler 1995','Chrysler',1995,10.0877,'kilometres_per_litre',2190126),('Chrysler 1996','Chrysler',1996,9.64974,'kilometres_per_litre',2335648),('Chrysler 1997','Chrysler',1997,9.65624,'kilometres_per_litre',2232308),('Chrysler 1998','Chrysler',1998,9.74803,'kilometres_per_litre',2264822),('Chrysler 1999','Chrysler',1999,8.77064,'kilometres_per_litre',NULL),('Chrysler 2000','Chrysler',2000,8.49237,'kilometres_per_litre',NULL),('Chrysler 2001','Chrysler',2001,8.8204,'kilometres_per_litre',NULL),('Chrysler 2002','Chrysler',2002,8.85187,'kilometres_per_litre',NULL),('Chrysler 2003','Chrysler',2003,8.84497,'kilometres_per_litre',NULL),('Chrysler 2004','Chrysler',2004,8.78649,'kilometres_per_litre',NULL),('Chrysler 2005','Chrysler',2005,8.73979,'kilometres_per_litre',NULL),('Chrysler 2006','Chrysler',2006,8.56691,'kilometres_per_litre',NULL),('Chrysler 2007','Chrysler',2007,8.18966,'kilometres_per_litre',NULL),('Chrysler 2008','Chrysler',2008,10.7989,'kilometres_per_litre',1657204),('Chrysler 2009','Chrysler',2009,10.6423,'kilometres_per_litre',815650),('Chrysler 2010','Chrysler',2010,9.05966,'kilometres_per_litre',NULL),('Citroën 1987','Citroën',1987,9.31065,'kilometres_per_litre',85),('Citroën 1988','Citroën',1988,9.60825,'kilometres_per_litre',22),('Citroën 1989','Citroën',1989,8.84299,'kilometres_per_litre',15),('Citroën INC 1991','Citroën INC',1991,7.15028,'kilometres_per_litre',NULL),('Citroën INC 1992','Citroën INC',1992,6.86501,'kilometres_per_litre',NULL),('Citroën INC 1993','Citroën INC',1993,6.70222,'kilometres_per_litre',NULL),('Daewoo 1998','Daewoo',1998,12.1591,'kilometres_per_litre',408),('Daewoo 1999','Daewoo',1999,12.2867,'kilometres_per_litre',32081),('Daewoo 2000','Daewoo',2000,12.1591,'kilometres_per_litre',75560),('Daewoo 2001','Daewoo',2001,12.1591,'kilometres_per_litre',55188),('Daewoo 2002','Daewoo',2002,11.9891,'kilometres_per_litre',17396),('Daewoo 2003','Daewoo',2003,12.3717,'kilometres_per_litre',1729),('Daewoo 2004','Daewoo',2004,10.395,'kilometres_per_litre',NULL),('Daihatsu 1988','Daihatsu',1988,19.8967,'kilometres_per_litre',13522),('Daihatsu 1989','Daihatsu',1989,18.7488,'kilometres_per_litre',15812),('Daihatsu 1990','Daihatsu',1990,15.2384,'kilometres_per_litre',19961),('Daihatsu 1991','Daihatsu',1991,16.1553,'kilometres_per_litre',5615),('Daihatsu 1992','Daihatsu',1992,16.5334,'kilometres_per_litre',21800),('Dodge 1985','Dodge',1985,7.63126,'kilometres_per_litre',NULL),('Dodge 1986','Dodge',1986,7.4599,'kilometres_per_litre',NULL),('Dodge 1987','Dodge',1987,7.26791,'kilometres_per_litre',NULL),('Dodge 1988','Dodge',1988,7.47413,'kilometres_per_litre',NULL),('Dodge 1989','Dodge',1989,7.50306,'kilometres_per_litre',NULL),('Dodge 1990','Dodge',1990,7.22025,'kilometres_per_litre',NULL),('Dodge 1991','Dodge',1991,7.03649,'kilometres_per_litre',NULL),('Dodge 1992','Dodge',1992,7.21148,'kilometres_per_litre',NULL),('Dodge 1993','Dodge',1993,7.43348,'kilometres_per_litre',NULL),('Dodge 1994','Dodge',1994,7.37717,'kilometres_per_litre',NULL),('Dodge 1995','Dodge',1995,7.28366,'kilometres_per_litre',NULL),('Dodge 1996','Dodge',1996,7.16012,'kilometres_per_litre',NULL),('Dodge 1997','Dodge',1997,7.45935,'kilometres_per_litre',NULL),('Dodge 1998','Dodge',1998,7.36383,'kilometres_per_litre',NULL),('Dodge 1999','Dodge',1999,7.27243,'kilometres_per_litre',NULL),('Dodge 2000','Dodge',2000,7.14758,'kilometres_per_litre',NULL),('Dodge 2001','Dodge',2001,7.08896,'kilometres_per_litre',NULL),('Dodge 2002','Dodge',2002,7.23758,'kilometres_per_litre',NULL),('Dodge 2003','Dodge',2003,7.50219,'kilometres_per_litre',NULL),('Dodge 2004','Dodge',2004,7.51659,'kilometres_per_litre',NULL),('Dodge 2005','Dodge',2005,7.81003,'kilometres_per_litre',NULL),('Dodge 2006','Dodge',2006,6.88488,'kilometres_per_litre',NULL),('Dodge 2007','Dodge',2007,7.54123,'kilometres_per_litre',NULL),('Dodge 2008','Dodge',2008,7.38447,'kilometres_per_litre',NULL),('Dodge 2009','Dodge',2009,7.66087,'kilometres_per_litre',NULL),('Dodge 2010','Dodge',2010,8.25568,'kilometres_per_litre',NULL),('Eagle 1988','Eagle',1988,9.32774,'kilometres_per_litre',NULL),('Eagle 1989','Eagle',1989,10.0274,'kilometres_per_litre',NULL),('Eagle 1990','Eagle',1990,9.74456,'kilometres_per_litre',NULL),('Eagle 1991','Eagle',1991,9.8891,'kilometres_per_litre',NULL),('Eagle 1992','Eagle',1992,9.51933,'kilometres_per_litre',NULL),('Eagle 1993','Eagle',1993,9.69686,'kilometres_per_litre',NULL),('Eagle 1994','Eagle',1994,9.74139,'kilometres_per_litre',NULL),('Eagle 1995','Eagle',1995,9.87875,'kilometres_per_litre',NULL),('Eagle 1996','Eagle',1996,9.72937,'kilometres_per_litre',NULL),('Eagle 1997','Eagle',1997,9.1861,'kilometres_per_litre',NULL),('Eagle 1998','Eagle',1998,9.70861,'kilometres_per_litre',NULL),('Excalibur 1987','Excalibur',1987,6.12608,'kilometres_per_litre',NULL),('Ferrari 1985','Ferrari',1985,6.07956,'kilometres_per_litre',913),('Ferrari 1986','Ferrari',1986,6.84481,'kilometres_per_litre',1052),('Ferrari 1987','Ferrari',1987,5.62165,'kilometres_per_litre',NULL),('Ferrari 1988','Ferrari',1988,5.62165,'kilometres_per_litre',NULL),('Ferrari 1989','Ferrari',1989,5.81004,'kilometres_per_litre',NULL),('Ferrari 1990','Ferrari',1990,5.6063,'kilometres_per_litre',NULL),('Ferrari 1991','Ferrari',1991,5.55266,'kilometres_per_litre',NULL),('Ferrari 1992','Ferrari',1992,5.62696,'kilometres_per_litre',NULL),('Ferrari 1993','Ferrari',1993,5.63745,'kilometres_per_litre',NULL),('Ferrari 1994','Ferrari',1994,5.69393,'kilometres_per_litre',NULL),('Ferrari 1995','Ferrari',1995,4.8782,'kilometres_per_litre',NULL),('Ferrari 1996','Ferrari',1996,4.90302,'kilometres_per_litre',NULL),('Ferrari 1997','Ferrari',1997,4.82204,'kilometres_per_litre',NULL),('Ferrari 1998','Ferrari',1998,4.75935,'kilometres_per_litre',NULL),('Ferrari 1999','Ferrari',1999,4.73513,'kilometres_per_litre',NULL),('Ferrari 2000','Ferrari',2000,4.8159,'kilometres_per_litre',NULL),('Ferrari 2001','Ferrari',2001,4.8159,'kilometres_per_litre',NULL),('Ferrari 2002','Ferrari',2002,4.97779,'kilometres_per_litre',NULL),('Ferrari 2003','Ferrari',2003,4.81454,'kilometres_per_litre',NULL),('Ferrari 2004','Ferrari',2004,5.07132,'kilometres_per_litre',NULL),('Ferrari 2005','Ferrari',2005,5.09791,'kilometres_per_litre',NULL),('Ferrari 2006','Ferrari',2006,7.01487,'kilometres_per_litre',1392),('Ferrari 2007','Ferrari',2007,6.88733,'kilometres_per_litre',1812),('Ferrari 2008','Ferrari',2008,6.97236,'kilometres_per_litre',1450),('Ferrari 2009','Ferrari',2009,5.49367,'kilometres_per_litre',NULL),('Ferrari 2010','Ferrari',2010,5.59942,'kilometres_per_litre',NULL),('Ford 1985','Ford',1985,10.8705,'kilometres_per_litre',2387443),('Ford 1986','Ford',1986,10.4252,'kilometres_per_litre',3259855),('Ford 1987','Ford',1987,10.4692,'kilometres_per_litre',2930579),('Ford 1988','Ford',1988,10.657,'kilometres_per_litre',3603190),('Ford 1989','Ford',1989,10.6113,'kilometres_per_litre',3514551),('Ford 1990','Ford',1990,10.2903,'kilometres_per_litre',2713195),('Ford 1991','Ford',1991,11.1428,'kilometres_per_litre',2170282),('Ford 1992','Ford',1992,10.2669,'kilometres_per_litre',2808976),('Ford 1993','Ford',1993,10.6887,'kilometres_per_litre',3645890),('Ford 1994','Ford',1994,10.3364,'kilometres_per_litre',3471426),('Ford 1995','Ford',1995,10.5112,'kilometres_per_litre',3601874),('Ford 1996','Ford',1996,10.091,'kilometres_per_litre',2960025),('Ford 1997','Ford',1997,10.0991,'kilometres_per_litre',3818375),('Ford 1998','Ford',1998,10.0665,'kilometres_per_litre',3819908),('Ford 1999','Ford',1999,10.2692,'kilometres_per_litre',3862947),('Ford 2000','Ford',2000,10.4324,'kilometres_per_litre',3864445),('Ford 2001','Ford',2001,10.0382,'kilometres_per_litre',3538256),('Ford 2002','Ford',2002,10.0817,'kilometres_per_litre',3530562),('Ford 2003','Ford',2003,10.2062,'kilometres_per_litre',3300315),('Ford 2004','Ford',2004,9.8537,'kilometres_per_litre',2927582),('Ford 2005','Ford',2005,10.4303,'kilometres_per_litre',2880931),('Ford 2006','Ford',2006,10.3829,'kilometres_per_litre',2565281),('Ford 2007','Ford',2007,10.9184,'kilometres_per_litre',2379757),('Ford 2008','Ford',2008,11.2233,'kilometres_per_litre',2169033),('Ford 2009','Ford',2009,11.6885,'kilometres_per_litre',1037325),('Ford 2010','Ford',2010,8.85396,'kilometres_per_litre',NULL),('Geo 1989','Geo',1989,13.1929,'kilometres_per_litre',NULL),('Geo 1990','Geo',1990,12.4666,'kilometres_per_litre',NULL),('Geo 1991','Geo',1991,12.3425,'kilometres_per_litre',NULL),('Geo 1992','Geo',1992,12.1521,'kilometres_per_litre',NULL),('Geo 1993','Geo',1993,12.2887,'kilometres_per_litre',NULL),('Geo 1994','Geo',1994,10.9898,'kilometres_per_litre',NULL),('Geo 1995','Geo',1995,12.928,'kilometres_per_litre',NULL),('Geo 1996','Geo',1996,11.0054,'kilometres_per_litre',NULL),('Geo 1997','Geo',1997,11.0224,'kilometres_per_litre',NULL),('GM 2003','GM',2003,10.4737,'kilometres_per_litre',4369888),('GM 2004','GM',2004,10.6376,'kilometres_per_litre',4321071),('GMC 1985','GMC',1985,7.42532,'kilometres_per_litre',NULL),('GMC 1986','GMC',1986,7.09471,'kilometres_per_litre',NULL),('GMC 1987','GMC',1987,7.08494,'kilometres_per_litre',NULL),('GMC 1988','GMC',1988,7.07749,'kilometres_per_litre',NULL),('GMC 1989','GMC',1989,6.87026,'kilometres_per_litre',NULL),('GMC 1990','GMC',1990,6.73911,'kilometres_per_litre',NULL),('GMC 1991','GMC',1991,6.8461,'kilometres_per_litre',NULL),('GMC 1992','GMC',1992,6.87868,'kilometres_per_litre',NULL),('GMC 1993','GMC',1993,6.72375,'kilometres_per_litre',NULL),('GMC 1994','GMC',1994,6.81862,'kilometres_per_litre',NULL),('GMC 1995','GMC',1995,6.71649,'kilometres_per_litre',NULL),('GMC 1996','GMC',1996,6.89786,'kilometres_per_litre',NULL),('GMC 1997','GMC',1997,6.89306,'kilometres_per_litre',NULL),('GMC 1998','GMC',1998,6.78585,'kilometres_per_litre',NULL),('GMC 1999','GMC',1999,6.80262,'kilometres_per_litre',NULL),('GMC 2000','GMC',2000,6.8981,'kilometres_per_litre',NULL),('GMC 2001','GMC',2001,6.62531,'kilometres_per_litre',NULL),('GMC 2002','GMC',2002,6.56039,'kilometres_per_litre',NULL),('GMC 2003','GMC',2003,6.31627,'kilometres_per_litre',NULL),('GMC 2004','GMC',2004,6.64601,'kilometres_per_litre',NULL),('GMC 2005','GMC',2005,6.75257,'kilometres_per_litre',NULL),('GMC 2006','GMC',2006,6.90722,'kilometres_per_litre',NULL),('GMC 2007','GMC',2007,6.68136,'kilometres_per_litre',NULL),('GMC 2008','GMC',2008,6.76103,'kilometres_per_litre',NULL),('GMC 2009','GMC',2009,6.76009,'kilometres_per_litre',NULL),('GMC 2010','GMC',2010,7.80003,'kilometres_per_litre',NULL),('Honda 1985','Honda',1985,14.6675,'kilometres_per_litre',541872),('Honda 1986','Honda',1986,14.1573,'kilometres_per_litre',629534),('Honda 1987','Honda',1987,14.1148,'kilometres_per_litre',764400),('Honda 1988','Honda',1988,13.6471,'kilometres_per_litre',848142),('Honda 1989','Honda',1989,13.4345,'kilometres_per_litre',754499),('Honda 1990','Honda',1990,13.0944,'kilometres_per_litre',894186),('Honda 1991','Honda',1991,13.0519,'kilometres_per_litre',882466),('Honda 1992','Honda',1992,13.307,'kilometres_per_litre',766617),('Honda 1993','Honda',1993,13.8172,'kilometres_per_litre',691903),('Honda 1994','Honda',1994,13.7747,'kilometres_per_litre',779072),('Honda 1995','Honda',1995,13.9022,'kilometres_per_litre',795598),('Honda 1996','Honda',1996,13.6692,'kilometres_per_litre',749883),('Honda 1997','Honda',1997,13.5147,'kilometres_per_litre',951812),('Honda 1998','Honda',1998,13.4633,'kilometres_per_litre',995594),('Honda 1999','Honda',1999,12.9161,'kilometres_per_litre',919140),('Honda 2000','Honda',2000,12.7674,'kilometres_per_litre',1143467),('Honda 2001','Honda',2001,13.0313,'kilometres_per_litre',1118325),('Honda 2002','Honda',2002,12.8928,'kilometres_per_litre',1223268),('Honda 2003','Honda',2003,12.6484,'kilometres_per_litre',1436382),('Honda 2004','Honda',2004,12.6281,'kilometres_per_litre',1364891),('Honda 2005','Honda',2005,12.6871,'kilometres_per_litre',1390671),('Honda 2006','Honda',2006,12.6611,'kilometres_per_litre',1479090),('Honda 2007','Honda',2007,12.8618,'kilometres_per_litre',1629113),('Honda 2008','Honda',2008,13.1671,'kilometres_per_litre',1512921),('Honda 2009','Honda',2009,13.6251,'kilometres_per_litre',1149040),('Honda 2010','Honda',2010,11.4946,'kilometres_per_litre',NULL),('Hummer 2006','Hummer',2006,6.87405,'kilometres_per_litre',NULL),('Hummer 2007','Hummer',2007,6.69369,'kilometres_per_litre',NULL),('Hummer 2008','Hummer',2008,6.40878,'kilometres_per_litre',NULL),('Hummer 2009','Hummer',2009,6.66905,'kilometres_per_litre',NULL),('Hummer 2010','Hummer',2010,6.63513,'kilometres_per_litre',NULL),('Hyundai 1986','Hyundai',1986,14.9225,'kilometres_per_litre',127183),('Hyundai 1987','Hyundai',1987,14.795,'kilometres_per_litre',231537),('Hyundai 1988','Hyundai',1988,14.6675,'kilometres_per_litre',296987),('Hyundai 1989','Hyundai',1989,14.1998,'kilometres_per_litre',216667),('Hyundai 1990','Hyundai',1990,14.1573,'kilometres_per_litre',116629),('Hyundai 1991','Hyundai',1991,13.9872,'kilometres_per_litre',133747),('Hyundai 1992','Hyundai',1992,13.307,'kilometres_per_litre',105082),('Hyundai 1993','Hyundai',1993,13.307,'kilometres_per_litre',105630),('Hyundai 1994','Hyundai',1994,14.0297,'kilometres_per_litre',112287),('Hyundai 1995','Hyundai',1995,13.2645,'kilometres_per_litre',142756),('Hyundai 1996','Hyundai',1996,14.0297,'kilometres_per_litre',84425),('Hyundai 1997','Hyundai',1997,13.3495,'kilometres_per_litre',104019),('Hyundai 1998','Hyundai',1998,13.1369,'kilometres_per_litre',90334),('Hyundai 1999','Hyundai',1999,13.0944,'kilometres_per_litre',129921),('Hyundai 2000','Hyundai',2000,12.9244,'kilometres_per_litre',251372),('Hyundai 2001','Hyundai',2001,12.8854,'kilometres_per_litre',324593),('Hyundai 2002','Hyundai',2002,12.6639,'kilometres_per_litre',392834),('Hyundai 2003','Hyundai',2003,12.3072,'kilometres_per_litre',407211),('Hyundai 2004','Hyundai',2004,11.8784,'kilometres_per_litre',424048),('Hyundai 2005','Hyundai',2005,12.2111,'kilometres_per_litre',433921),('Hyundai 2006','Hyundai',2006,12.3637,'kilometres_per_litre',424246),('Hyundai 2007','Hyundai',2007,12.674,'kilometres_per_litre',454629),('Hyundai 2008','Hyundai',2008,13.4653,'kilometres_per_litre',382810),('Hyundai 2009','Hyundai',2009,13.7263,'kilometres_per_litre',411764),('Hyundai 2010','Hyundai',2010,10.5426,'kilometres_per_litre',NULL),('Impco 2000','Impco',2000,9.25982,'kilometres_per_litre',NULL),('Impco 2001','Impco',2001,9.6659,'kilometres_per_litre',NULL),('Infiniti 1990','Infiniti',1990,7.90012,'kilometres_per_litre',NULL),('Infiniti 1991','Infiniti',1991,8.50589,'kilometres_per_litre',NULL),('Infiniti 1992','Infiniti',1992,8.50589,'kilometres_per_litre',NULL),('Infiniti 1993','Infiniti',1993,8.45488,'kilometres_per_litre',NULL),('Infiniti 1994','Infiniti',1994,8.51049,'kilometres_per_litre',NULL),('Infiniti 1995','Infiniti',1995,8.95022,'kilometres_per_litre',NULL),('Infiniti 1996','Infiniti',1996,9.04016,'kilometres_per_litre',NULL),('Infiniti 1997','Infiniti',1997,8.22048,'kilometres_per_litre',NULL),('Infiniti 1998','Infiniti',1998,8.22861,'kilometres_per_litre',NULL),('Infiniti 1999','Infiniti',1999,8.77456,'kilometres_per_litre',NULL),('Infiniti 2000','Infiniti',2000,8.80093,'kilometres_per_litre',NULL),('Infiniti 2001','Infiniti',2001,8.41681,'kilometres_per_litre',NULL),('Infiniti 2002','Infiniti',2002,8.44897,'kilometres_per_litre',NULL),('Infiniti 2003','Infiniti',2003,7.80294,'kilometres_per_litre',NULL),('Infiniti 2004','Infiniti',2004,7.75716,'kilometres_per_litre',NULL),('Infiniti 2005','Infiniti',2005,7.5388,'kilometres_per_litre',NULL),('Infiniti 2006','Infiniti',2006,7.73698,'kilometres_per_litre',NULL),('Infiniti 2007','Infiniti',2007,7.73953,'kilometres_per_litre',NULL),('Infiniti 2008','Infiniti',2008,7.8625,'kilometres_per_litre',NULL),('Infiniti 2009','Infiniti',2009,7.48971,'kilometres_per_litre',NULL),('Infiniti 2010','Infiniti',2010,8.23258,'kilometres_per_litre',NULL),('Isuzu 1985','Isuzu',1985,13.1338,'kilometres_per_litre',47264),('Isuzu 1986','Isuzu',1986,11.7843,'kilometres_per_litre',122585),('Isuzu 1987','Isuzu',1987,12.6756,'kilometres_per_litre',65203),('Isuzu 1988','Isuzu',1988,10.6191,'kilometres_per_litre',101038),('Isuzu 1989','Isuzu',1989,10.1094,'kilometres_per_litre',76850),('Isuzu 1990','Isuzu',1990,8.85583,'kilometres_per_litre',53919),('Isuzu 1991','Isuzu',1991,9.91997,'kilometres_per_litre',72954),('Isuzu 1992','Isuzu',1992,9.16844,'kilometres_per_litre',122369),('Isuzu 1993','Isuzu',1993,9.36132,'kilometres_per_litre',91572),('Isuzu 1994','Isuzu',1994,8.75796,'kilometres_per_litre',144823),('Isuzu 1995','Isuzu',1995,8.63042,'kilometres_per_litre',167721),('Isuzu 1996','Isuzu',1996,8.24779,'kilometres_per_litre',90578),('Isuzu 1997','Isuzu',1997,8.33282,'kilometres_per_litre',86249),('Isuzu 1998','Isuzu',1998,9.09807,'kilometres_per_litre',123824),('Isuzu 1999','Isuzu',1999,8.97053,'kilometres_per_litre',138446),('Isuzu 2000','Isuzu',2000,8.8855,'kilometres_per_litre',102218),('Isuzu 2001','Isuzu',2001,8.97053,'kilometres_per_litre',100127),('Isuzu 2002','Isuzu',2002,8.92802,'kilometres_per_litre',78913),('Isuzu 2003','Isuzu',2003,9.4807,'kilometres_per_litre',17473),('Isuzu 2004','Isuzu',2004,9.82082,'kilometres_per_litre',20210),('Isuzu 2005','Isuzu',2005,6.80693,'kilometres_per_litre',NULL),('Isuzu 2006','Isuzu',2006,7.427,'kilometres_per_litre',NULL),('Isuzu 2007','Isuzu',2007,7.65523,'kilometres_per_litre',NULL),('Isuzu 2008','Isuzu',2008,7.92102,'kilometres_per_litre',NULL),('Isuzu 2009','Isuzu',2009,7.11998,'kilometres_per_litre',NULL),('Jaguar 1985','Jaguar',1985,8.20527,'kilometres_per_litre',21461),('Jaguar 1986','Jaguar',1986,8.07773,'kilometres_per_litre',22973),('Jaguar 1987','Jaguar',1987,8.20527,'kilometres_per_litre',15881),('Jaguar 1988','Jaguar',1988,9.39568,'kilometres_per_litre',28626),('Jaguar 1989','Jaguar',1989,8.84299,'kilometres_per_litre',22147),('Jaguar 1990','Jaguar',1990,6.53392,'kilometres_per_litre',NULL),('Jaguar 1991','Jaguar',1991,6.53392,'kilometres_per_litre',NULL),('Jaguar 1992','Jaguar',1992,6.49024,'kilometres_per_litre',NULL),('Jaguar 1993','Jaguar',1993,6.81662,'kilometres_per_litre',NULL),('Jaguar 1994','Jaguar',1994,6.87089,'kilometres_per_litre',NULL),('Jaguar 1995','Jaguar',1995,6.06939,'kilometres_per_litre',NULL),('Jaguar 1996','Jaguar',1996,7.04892,'kilometres_per_litre',NULL),('Jaguar 1997','Jaguar',1997,7.80257,'kilometres_per_litre',NULL),('Jaguar 1998','Jaguar',1998,7.79401,'kilometres_per_litre',NULL),('Jaguar 1999','Jaguar',1999,7.67416,'kilometres_per_litre',NULL),('Jaguar 2000','Jaguar',2000,7.69566,'kilometres_per_litre',NULL),('Jaguar 2001','Jaguar',2001,7.76456,'kilometres_per_litre',NULL),('Jaguar 2002','Jaguar',2002,7.96431,'kilometres_per_litre',NULL),('Jaguar 2003','Jaguar',2003,8.03954,'kilometres_per_litre',NULL),('Jaguar 2004','Jaguar',2004,8.23265,'kilometres_per_litre',NULL),('Jaguar 2005','Jaguar',2005,8.35073,'kilometres_per_litre',NULL),('Jaguar 2006','Jaguar',2006,8.21964,'kilometres_per_litre',NULL),('Jaguar 2007','Jaguar',2007,8.25151,'kilometres_per_litre',NULL),('Jaguar 2008','Jaguar',2008,8.54952,'kilometres_per_litre',65180),('Jaguar 2009','Jaguar',2009,9.11279,'kilometres_per_litre',30042),('Jaguar 2010','Jaguar',2010,8.03934,'kilometres_per_litre',NULL),('Jeep 1985','Jeep',1985,7.38024,'kilometres_per_litre',NULL),('Jeep 1986','Jeep',1986,7.87956,'kilometres_per_litre',NULL),('Jeep 1987','Jeep',1987,7.70806,'kilometres_per_litre',NULL),('Jeep 1988','Jeep',1988,7.55542,'kilometres_per_litre',NULL),('Jeep 1989','Jeep',1989,7.70445,'kilometres_per_litre',NULL),('Jeep 1990','Jeep',1990,7.75035,'kilometres_per_litre',NULL),('Jeep 1991','Jeep',1991,7.24607,'kilometres_per_litre',NULL),('Jeep 1992','Jeep',1992,7.52014,'kilometres_per_litre',NULL),('Jeep 1993','Jeep',1993,7.26037,'kilometres_per_litre',NULL),('Jeep 1994','Jeep',1994,6.99774,'kilometres_per_litre',NULL),('Jeep 1995','Jeep',1995,6.93179,'kilometres_per_litre',NULL),('Jeep 1996','Jeep',1996,7.25326,'kilometres_per_litre',NULL),('Jeep 1997','Jeep',1997,6.4817,'kilometres_per_litre',NULL),('Jeep 1998','Jeep',1998,7.03122,'kilometres_per_litre',NULL),('Jeep 1999','Jeep',1999,7.26137,'kilometres_per_litre',NULL),('Jeep 2000','Jeep',2000,7.28694,'kilometres_per_litre',NULL),('Jeep 2001','Jeep',2001,7.00871,'kilometres_per_litre',NULL),('Jeep 2002','Jeep',2002,6.74418,'kilometres_per_litre',NULL),('Jeep 2003','Jeep',2003,7.43358,'kilometres_per_litre',NULL),('Jeep 2004','Jeep',2004,7.4629,'kilometres_per_litre',NULL),('Jeep 2005','Jeep',2005,7.40238,'kilometres_per_litre',NULL),('Jeep 2006','Jeep',2006,7.04206,'kilometres_per_litre',NULL),('Jeep 2007','Jeep',2007,7.58817,'kilometres_per_litre',NULL),('Jeep 2008','Jeep',2008,7.82547,'kilometres_per_litre',NULL),('Jeep 2009','Jeep',2009,7.69807,'kilometres_per_litre',NULL),('Jeep 2010','Jeep',2010,8.72099,'kilometres_per_litre',NULL),('Kia 1994','Kia',1994,14.0723,'kilometres_per_litre',11294),('Kia 1995','Kia',1995,12.279,'kilometres_per_litre',30723),('Kia 1996','Kia',1996,11.7529,'kilometres_per_litre',35686),('Kia 1997','Kia',1997,12.0779,'kilometres_per_litre',66209),('Kia 1998','Kia',1998,12.126,'kilometres_per_litre',72315),('Kia 1999','Kia',1999,12.0287,'kilometres_per_litre',95331),('Kia 2000','Kia',2000,11.6572,'kilometres_per_litre',167546),('Kia 2001','Kia',2001,12.1059,'kilometres_per_litre',214537),('Kia 2002','Kia',2002,11.281,'kilometres_per_litre',253336),('Kia 2003','Kia',2003,11.0827,'kilometres_per_litre',233061),('Kia 2004','Kia',2004,11.0011,'kilometres_per_litre',268225),('Kia 2005','Kia',2005,10.6749,'kilometres_per_litre',291725),('Kia 2006','Kia',2006,11.9317,'kilometres_per_litre',317658),('Kia 2007','Kia',2007,12.4264,'kilometres_per_litre',304770),('Kia 2008','Kia',2008,12.6242,'kilometres_per_litre',289669),('Kia 2009','Kia',2009,13.4708,'kilometres_per_litre',237171),('Kia 2010','Kia',2010,10.4752,'kilometres_per_litre',NULL),('Laforza 1989','Laforza',1989,4.87946,'kilometres_per_litre',NULL),('Laforza 1990','Laforza',1990,4.87946,'kilometres_per_litre',NULL),('Lamborghini 1986','Lamborghini',1986,3.74126,'kilometres_per_litre',47),('Lamborghini 1987','Lamborghini',1987,3.17876,'kilometres_per_litre',NULL),('Lamborghini 1988','Lamborghini',1988,3.17876,'kilometres_per_litre',NULL),('Lamborghini 1989','Lamborghini',1989,3.17876,'kilometres_per_litre',NULL),('Lamborghini 1990','Lamborghini',1990,3.81318,'kilometres_per_litre',NULL),('Lamborghini 1991','Lamborghini',1991,4.4476,'kilometres_per_litre',NULL),('Lamborghini 1992','Lamborghini',1992,4.4476,'kilometres_per_litre',NULL),('Lamborghini 1993','Lamborghini',1993,4.4476,'kilometres_per_litre',NULL),('Lamborghini 1995','Lamborghini',1995,5.48435,'kilometres_per_litre',45),('Lamborghini 1996','Lamborghini',1996,5.35681,'kilometres_per_litre',32),('Lamborghini 1997','Lamborghini',1997,5.44184,'kilometres_per_litre',74),('Lamborghini 1998','Lamborghini',1998,4.56537,'kilometres_per_litre',NULL),('Lamborghini 1999','Lamborghini',1999,4.56537,'kilometres_per_litre',NULL),('Lamborghini 2001','Lamborghini',2001,4.62797,'kilometres_per_litre',NULL),('Lamborghini 2002','Lamborghini',2002,4.27497,'kilometres_per_litre',NULL),('Lamborghini 2003','Lamborghini',2003,4.27497,'kilometres_per_litre',NULL),('Lamborghini 2004','Lamborghini',2004,4.71233,'kilometres_per_litre',NULL),('Lamborghini 2005','Lamborghini',2005,4.71233,'kilometres_per_litre',NULL),('Lamborghini 2006','Lamborghini',2006,5.27362,'kilometres_per_litre',NULL),('Lamborghini 2007','Lamborghini',2007,5.45639,'kilometres_per_litre',NULL),('Lamborghini 2008','Lamborghini',2008,5.07604,'kilometres_per_litre',NULL),('Lamborghini 2009','Lamborghini',2009,5.44195,'kilometres_per_litre',NULL),('Lamborghini 2010','Lamborghini',2010,5.37823,'kilometres_per_litre',NULL),('Land Rover 1987','Land Rover',1987,5.39236,'kilometres_per_litre',NULL),('Land Rover 1988','Land Rover',1988,5.55352,'kilometres_per_litre',NULL),('Land Rover 1989','Land Rover',1989,5.20812,'kilometres_per_litre',NULL),('Land Rover 1990','Land Rover',1990,5.53414,'kilometres_per_litre',NULL),('Land Rover 1991','Land Rover',1991,5.53414,'kilometres_per_litre',NULL),('Land Rover 1992','Land Rover',1992,5.53414,'kilometres_per_litre',NULL),('Land Rover 1997','Land Rover',1997,5.69862,'kilometres_per_litre',NULL),('Land Rover 1998','Land Rover',1998,5.77235,'kilometres_per_litre',NULL),('Land Rover 1999','Land Rover',1999,5.76289,'kilometres_per_litre',NULL),('Land Rover 2000','Land Rover',2000,5.71167,'kilometres_per_litre',NULL),('Land Rover 2001','Land Rover',2001,5.67052,'kilometres_per_litre',NULL),('Land Rover 2002','Land Rover',2002,6.16089,'kilometres_per_litre',NULL),('Land Rover 2003','Land Rover',2003,6.41587,'kilometres_per_litre',NULL),('Land Rover 2004','Land Rover',2004,6.07482,'kilometres_per_litre',NULL),('Land Rover 2005','Land Rover',2005,6.38559,'kilometres_per_litre',NULL),('Land Rover 2006','Land Rover',2006,6.25016,'kilometres_per_litre',NULL),('Land Rover 2007','Land Rover',2007,6.32358,'kilometres_per_litre',NULL),('Land Rover 2008','Land Rover',2008,6.55943,'kilometres_per_litre',NULL),('Land Rover 2009','Land Rover',2009,6.55943,'kilometres_per_litre',NULL),('Land Rover 2010','Land Rover',2010,6.53018,'kilometres_per_litre',NULL),('Lexus 1990','Lexus',1990,8.40197,'kilometres_per_litre',NULL),('Lexus 1991','Lexus',1991,8.20991,'kilometres_per_litre',NULL),('Lexus 1992','Lexus',1992,7.95133,'kilometres_per_litre',NULL),('Lexus 1993','Lexus',1993,7.97616,'kilometres_per_litre',NULL),('Lexus 1994','Lexus',1994,7.91288,'kilometres_per_litre',NULL),('Lexus 1995','Lexus',1995,8.17396,'kilometres_per_litre',NULL),('Lexus 1996','Lexus',1996,8.05185,'kilometres_per_litre',NULL),('Lexus 1997','Lexus',1997,7.87934,'kilometres_per_litre',NULL),('Lexus 1998','Lexus',1998,7.97707,'kilometres_per_litre',NULL),('Lexus 1999','Lexus',1999,7.99657,'kilometres_per_litre',NULL),('Lexus 2000','Lexus',2000,7.96542,'kilometres_per_litre',NULL),('Lexus 2001','Lexus',2001,7.79502,'kilometres_per_litre',NULL),('Lexus 2002','Lexus',2002,7.99902,'kilometres_per_litre',NULL),('Lexus 2003','Lexus',2003,7.85451,'kilometres_per_litre',NULL),('Lexus 2004','Lexus',2004,8.00854,'kilometres_per_litre',NULL),('Lexus 2005','Lexus',2005,8.10266,'kilometres_per_litre',NULL),('Lexus 2006','Lexus',2006,8.94,'kilometres_per_litre',NULL),('Lexus 2007','Lexus',2007,8.97905,'kilometres_per_litre',NULL),('Lexus 2008','Lexus',2008,8.93438,'kilometres_per_litre',NULL),('Lexus 2009','Lexus',2009,8.69554,'kilometres_per_litre',NULL),('Lexus 2010','Lexus',2010,9.38946,'kilometres_per_litre',NULL),('Lincoln 1985','Lincoln',1985,10.313,'kilometres_per_litre',NULL),('Lincoln 1986','Lincoln',1986,9.75538,'kilometres_per_litre',NULL),('Lincoln 1987','Lincoln',1987,10.1344,'kilometres_per_litre',NULL),('Lincoln 1988','Lincoln',1988,9.12407,'kilometres_per_litre',NULL),('Lincoln 1989','Lincoln',1989,9.0948,'kilometres_per_litre',NULL),('Lincoln 1990','Lincoln',1990,8.56601,'kilometres_per_litre',NULL),('Lincoln 1991','Lincoln',1991,9.4728,'kilometres_per_litre',NULL),('Lincoln 1992','Lincoln',1992,9.51648,'kilometres_per_litre',NULL),('Lincoln 1993','Lincoln',1993,9.73725,'kilometres_per_litre',NULL),('Lincoln 1994','Lincoln',1994,9.67915,'kilometres_per_litre',NULL),('Lincoln 1995','Lincoln',1995,9.61813,'kilometres_per_litre',NULL),('Lincoln 1996','Lincoln',1996,9.68417,'kilometres_per_litre',NULL),('Lincoln 1997','Lincoln',1997,9.54366,'kilometres_per_litre',NULL),('Lincoln 1998','Lincoln',1998,9.17398,'kilometres_per_litre',NULL),('Lincoln 1999','Lincoln',1999,8.9892,'kilometres_per_litre',NULL),('Lincoln 2000','Lincoln',2000,8.54683,'kilometres_per_litre',NULL),('Lincoln 2001','Lincoln',2001,8.17834,'kilometres_per_litre',NULL),('Lincoln 2002','Lincoln',2002,8.01244,'kilometres_per_litre',NULL),('Lincoln 2003','Lincoln',2003,7.747,'kilometres_per_litre',NULL),('Lincoln 2004','Lincoln',2004,7.82614,'kilometres_per_litre',NULL),('Lincoln 2005','Lincoln',2005,8.03697,'kilometres_per_litre',NULL),('Lincoln 2006','Lincoln',2006,8.04977,'kilometres_per_litre',NULL),('Lincoln 2007','Lincoln',2007,7.99263,'kilometres_per_litre',NULL),('Lincoln 2008','Lincoln',2008,8.06629,'kilometres_per_litre',NULL),('Lincoln 2009','Lincoln',2009,8.26499,'kilometres_per_litre',NULL),('Lincoln 2010','Lincoln',2010,9.45923,'kilometres_per_litre',NULL),('Lotus 1985','Lotus',1985,7.73762,'kilometres_per_litre',90),('Lotus 1987','Lotus',1987,8.36471,'kilometres_per_litre',NULL),('Lotus 1988','Lotus',1988,8.12632,'kilometres_per_litre',NULL),('Lotus 1989','Lotus',1989,8.39742,'kilometres_per_litre',NULL),('Lotus 1990','Lotus',1990,8.3636,'kilometres_per_litre',NULL),('Lotus 1991','Lotus',1991,9.37936,'kilometres_per_litre',NULL),('Lotus 1992','Lotus',1992,9.37936,'kilometres_per_litre',NULL),('Lotus 1993','Lotus',1993,9.22247,'kilometres_per_litre',NULL),('Lotus 1994','Lotus',1994,8.3636,'kilometres_per_litre',NULL),('Lotus 1995','Lotus',1995,10.1184,'kilometres_per_litre',227),('Lotus 1997','Lotus',1997,9.05556,'kilometres_per_litre',119),('Lotus 1998','Lotus',1998,9.05556,'kilometres_per_litre',102),('Lotus 2000','Lotus',2000,8.80048,'kilometres_per_litre',117),('Lotus 2003','Lotus',2003,8.84299,'kilometres_per_litre',96),('Lotus 2004','Lotus',2004,8.84299,'kilometres_per_litre',39),('Lotus 2005','Lotus',2005,12.4992,'kilometres_per_litre',3320),('Lotus 2006','Lotus',2006,13.0944,'kilometres_per_litre',1424),('Lotus 2007','Lotus',2007,12.7968,'kilometres_per_litre',732),('Lotus 2008','Lotus',2008,12.7118,'kilometres_per_litre',252),('Lotus 2010','Lotus',2010,10.0226,'kilometres_per_litre',NULL),('Maserati 1985','Maserati',1985,7.14241,'kilometres_per_litre',2001),('Maserati 1986','Maserati',1986,6.97236,'kilometres_per_litre',1212),('Maserati 1987','Maserati',1987,7.56756,'kilometres_per_litre',706),('Maserati 1988','Maserati',1988,8.36165,'kilometres_per_litre',NULL),('Maserati 1989','Maserati',1989,7.95019,'kilometres_per_litre',345),('Maserati 1990','Maserati',1990,8.12024,'kilometres_per_litre',62),('Maserati 1991','Maserati',1991,8.2903,'kilometres_per_litre',4),('Maserati 2002','Maserati',2002,5.3846,'kilometres_per_litre',NULL),('Maserati 2003','Maserati',2003,5.46832,'kilometres_per_litre',NULL),('Maserati 2004','Maserati',2004,5.46237,'kilometres_per_litre',NULL),('Maserati 2005','Maserati',2005,5.49935,'kilometres_per_litre',NULL),('Maserati 2006','Maserati',2006,7.22744,'kilometres_per_litre',2437),('Maserati 2007','Maserati',2007,7.3975,'kilometres_per_litre',2176),('Maserati 2008','Maserati',2008,7.90767,'kilometres_per_litre',2661),('Maserati 2009','Maserati',2009,6.43917,'kilometres_per_litre',NULL),('Maserati 2010','Maserati',2010,6.43701,'kilometres_per_litre',NULL),('Maybach 2004','Maybach',2004,5.64054,'kilometres_per_litre',NULL),('Maybach 2005','Maybach',2005,5.66697,'kilometres_per_litre',NULL),('Maybach 2006','Maybach',2006,5.66697,'kilometres_per_litre',NULL),('Maybach 2007','Maybach',2007,5.43864,'kilometres_per_litre',NULL),('Maybach 2008','Maybach',2008,5.37097,'kilometres_per_litre',NULL),('Maybach 2009','Maybach',2009,5.37097,'kilometres_per_litre',NULL),('Maybach 2010','Maybach',2010,5.40114,'kilometres_per_litre',NULL),('Mazda 1985','Mazda',1985,12.8819,'kilometres_per_litre',220517),('Mazda 1986','Mazda',1986,12.2535,'kilometres_per_litre',406305),('Mazda 1987','Mazda',1987,11.8899,'kilometres_per_litre',414862),('Mazda 1988','Mazda',1988,11.9667,'kilometres_per_litre',366943),('Mazda 1989','Mazda',1989,11.9247,'kilometres_per_litre',353143),('Mazda 1990','Mazda',1990,11.9957,'kilometres_per_litre',370893),('Mazda 1991','Mazda',1991,12.0827,'kilometres_per_litre',352193),('Mazda 1992','Mazda',1992,12.1292,'kilometres_per_litre',301161),('Mazda 1993','Mazda',1993,12.3892,'kilometres_per_litre',357294),('Mazda 1994','Mazda',1994,12.6661,'kilometres_per_litre',284634),('Mazda 1995','Mazda',1995,12.9168,'kilometres_per_litre',288221),('Mazda 1996','Mazda',1996,13.176,'kilometres_per_litre',189415),('Mazda 1997','Mazda',1997,9.03434,'kilometres_per_litre',NULL),('Mazda 1998','Mazda',1998,8.73013,'kilometres_per_litre',NULL),('Mazda 1999','Mazda',1999,8.98855,'kilometres_per_litre',NULL),('Mazda 2000','Mazda',2000,8.41022,'kilometres_per_litre',NULL),('Mazda 2001','Mazda',2001,8.86524,'kilometres_per_litre',NULL),('Mazda 2002','Mazda',2002,8.70051,'kilometres_per_litre',NULL),('Mazda 2003','Mazda',2003,8.68417,'kilometres_per_litre',NULL),('Mazda 2004','Mazda',2004,9.06266,'kilometres_per_litre',NULL),('Mazda 2005','Mazda',2005,9.07898,'kilometres_per_litre',NULL),('Mazda 2006','Mazda',2006,9.20292,'kilometres_per_litre',NULL),('Mazda 2007','Mazda',2007,9.07394,'kilometres_per_litre',NULL),('Mazda 2008','Mazda',2008,9.42092,'kilometres_per_litre',NULL),('Mazda 2009','Mazda',2009,12.7385,'kilometres_per_litre',146780),('Mazda 2010','Mazda',2010,10.0443,'kilometres_per_litre',NULL),('Mercedes-Benz 1985','Mercedes-Benz',1985,10.0334,'kilometres_per_litre',92254),('Mercedes-Benz 1986','Mercedes-Benz',1986,9.05556,'kilometres_per_litre',86020),('Mercedes-Benz 1987','Mercedes-Benz',1987,9.4807,'kilometres_per_litre',110954),('Mercedes-Benz 1988','Mercedes-Benz',1988,9.05556,'kilometres_per_litre',77853),('Mercedes-Benz 1989','Mercedes-Benz',1989,9.09807,'kilometres_per_litre',80059),('Mercedes-Benz 1990','Mercedes-Benz',1990,9.09807,'kilometres_per_litre',57561),('Mercedes-Benz 1991','Mercedes-Benz',1991,9.4807,'kilometres_per_litre',73729),('Mercedes-Benz 1992','Mercedes-Benz',1992,9.31065,'kilometres_per_litre',64723),('Mercedes-Benz 1993','Mercedes-Benz',1993,9.73579,'kilometres_per_litre',58833),('Mercedes-Benz 1994','Mercedes-Benz',1994,10.0759,'kilometres_per_litre',59232),('Mercedes-Benz 1995','Mercedes-Benz',1995,10.501,'kilometres_per_litre',100172),('Mercedes-Benz 1996','Mercedes-Benz',1996,10.7561,'kilometres_per_litre',62051),('Mercedes-Benz 1997','Mercedes-Benz',1997,10.7136,'kilometres_per_litre',102009),('Mercedes-Benz 1998','Mercedes-Benz',1998,10.911,'kilometres_per_litre',151728),('Mercedes-Benz 1999','Mercedes-Benz',1999,8.2448,'kilometres_per_litre',NULL),('Mercedes-Benz 2000','Mercedes-Benz',2000,8.21135,'kilometres_per_litre',NULL),('Mercedes-Benz 2001','Mercedes-Benz',2001,8.20222,'kilometres_per_litre',NULL),('Mercedes-Benz 2002','Mercedes-Benz',2002,7.96332,'kilometres_per_litre',NULL),('Mercedes-Benz 2003','Mercedes-Benz',2003,7.89984,'kilometres_per_litre',NULL),('Mercedes-Benz 2004','Mercedes-Benz',2004,7.83762,'kilometres_per_litre',NULL),('Mercedes-Benz 2005','Mercedes-Benz',2005,7.68945,'kilometres_per_litre',NULL),('Mercedes-Benz 2006','Mercedes-Benz',2006,7.7034,'kilometres_per_litre',NULL),('Mercedes-Benz 2007','Mercedes-Benz',2007,7.45174,'kilometres_per_litre',NULL),('Mercedes-Benz 2008','Mercedes-Benz',2008,7.63283,'kilometres_per_litre',NULL),('Mercedes-Benz 2009','Mercedes-Benz',2009,7.40968,'kilometres_per_litre',NULL),('Mercedes-Benz 2010','Mercedes-Benz',2010,8.00861,'kilometres_per_litre',NULL),('Mercury 1993','Mercury',1993,7.67824,'kilometres_per_litre',NULL),('Mercury 1994','Mercury',1994,7.67824,'kilometres_per_litre',NULL),('Mercury 1995','Mercury',1995,7.80257,'kilometres_per_litre',NULL),('Mercury 1996','Mercury',1996,7.67824,'kilometres_per_litre',NULL),('Mercury 1997','Mercury',1997,6.93348,'kilometres_per_litre',NULL),('Mercury 1998','Mercury',1998,6.96745,'kilometres_per_litre',NULL),('Mercury 1999','Mercury',1999,6.84326,'kilometres_per_litre',NULL),('Mercury 2000','Mercury',2000,7.00402,'kilometres_per_litre',NULL),('Mercury 2001','Mercury',2001,6.87618,'kilometres_per_litre',NULL),('Mercury 2002','Mercury',2002,6.54764,'kilometres_per_litre',NULL),('Mercury 2003','Mercury',2003,6.22141,'kilometres_per_litre',NULL),('Mercury 2004','Mercury',2004,6.40687,'kilometres_per_litre',NULL),('Mercury 2005','Mercury',2005,6.97543,'kilometres_per_litre',NULL),('Mercury 2006','Mercury',2006,8.07401,'kilometres_per_litre',NULL),('Mercury 2007','Mercury',2007,8.07375,'kilometres_per_litre',NULL),('Mercury 2008','Mercury',2008,8.88285,'kilometres_per_litre',NULL),('Mercury 2009','Mercury',2009,9.1195,'kilometres_per_litre',NULL),('Mercury 2010','Mercury',2010,9.22508,'kilometres_per_litre',NULL),('Merkur 1985','Merkur',1985,8.02486,'kilometres_per_litre',NULL),('Merkur 1986','Merkur',1986,8.02486,'kilometres_per_litre',NULL),('Merkur 1987','Merkur',1987,8.11287,'kilometres_per_litre',NULL),('Merkur 1988','Merkur',1988,7.92664,'kilometres_per_litre',NULL),('Merkur 1989','Merkur',1989,7.92664,'kilometres_per_litre',NULL),('Mini 2004','Mini',2004,11.4142,'kilometres_per_litre',NULL),('Mini 2005','Mini',2005,11.3639,'kilometres_per_litre',NULL),('Mini 2006','Mini',2006,11.1486,'kilometres_per_litre',NULL),('Mini 2007','Mini',2007,11.5976,'kilometres_per_litre',NULL),('Mini 2008','Mini',2008,12.1356,'kilometres_per_litre',NULL),('Mini 2009','Mini',2009,12.7558,'kilometres_per_litre',NULL),('Mini 2010','Mini',2010,12.603,'kilometres_per_litre',NULL),('Mitsubishi 1985','Mitsubishi',1985,13.2545,'kilometres_per_litre',65179),('Mitsubishi 1986','Mitsubishi',1986,12.9773,'kilometres_per_litre',76987),('Mitsubishi 1987','Mitsubishi',1987,12.7216,'kilometres_per_litre',91531),('Mitsubishi 1988','Mitsubishi',1988,12.5533,'kilometres_per_litre',73583),('Mitsubishi 1989','Mitsubishi',1989,12.5843,'kilometres_per_litre',94140),('Mitsubishi 1990','Mitsubishi',1990,12.506,'kilometres_per_litre',195841),('Mitsubishi 1991','Mitsubishi',1991,12.408,'kilometres_per_litre',183205),('Mitsubishi 1992','Mitsubishi',1992,11.6803,'kilometres_per_litre',218164),('Mitsubishi 1993','Mitsubishi',1993,12.0866,'kilometres_per_litre',168148),('Mitsubishi 1994','Mitsubishi',1994,12.0278,'kilometres_per_litre',222088),('Mitsubishi 1995','Mitsubishi',1995,12.0968,'kilometres_per_litre',279163),('Mitsubishi 1996','Mitsubishi',1996,12.5235,'kilometres_per_litre',150563),('Mitsubishi 1997','Mitsubishi',1997,12.4102,'kilometres_per_litre',247795),('Mitsubishi 1998','Mitsubishi',1998,12.0654,'kilometres_per_litre',202459),('Mitsubishi 1999','Mitsubishi',1999,12.0495,'kilometres_per_litre',227700),('Mitsubishi 2000','Mitsubishi',2000,11.5294,'kilometres_per_litre',316121),('Mitsubishi 2001','Mitsubishi',2001,9.08511,'kilometres_per_litre',NULL),('Mitsubishi 2002','Mitsubishi',2002,9.35908,'kilometres_per_litre',NULL),('Mitsubishi 2003','Mitsubishi',2003,9.06737,'kilometres_per_litre',NULL),('Mitsubishi 2004','Mitsubishi',2004,9.04191,'kilometres_per_litre',NULL),('Mitsubishi 2005','Mitsubishi',2005,11.7236,'kilometres_per_litre',108188),('Mitsubishi 2006','Mitsubishi',2006,11.955,'kilometres_per_litre',134609),('Mitsubishi 2007','Mitsubishi',2007,11.5493,'kilometres_per_litre',116474),('Mitsubishi 2008','Mitsubishi',2008,12.2168,'kilometres_per_litre',100728),('Mitsubishi 2009','Mitsubishi',2009,12.7606,'kilometres_per_litre',93085),('Mitsubishi 2010','Mitsubishi',2010,9.42693,'kilometres_per_litre',NULL),('Morgan 2003','Morgan',2003,7.62285,'kilometres_per_litre',NULL),('Nissan 1985','Nissan',1985,12.532,'kilometres_per_litre',576457),('Nissan 1986','Nissan',1986,12.301,'kilometres_per_litre',528707),('Nissan 1987','Nissan',1987,12.0322,'kilometres_per_litre',1049640),('Nissan 1988','Nissan',1988,12.2127,'kilometres_per_litre',596628),('Nissan 1989','Nissan',1989,12.2601,'kilometres_per_litre',623914),('Nissan 1990','Nissan',1990,11.7826,'kilometres_per_litre',650871),('Nissan 1991','Nissan',1991,11.8655,'kilometres_per_litre',577373),('Nissan 1992','Nissan',1992,12.2091,'kilometres_per_litre',508795),('Nissan 1993','Nissan',1993,11.7132,'kilometres_per_litre',551703),('Nissan 1994','Nissan',1994,11.837,'kilometres_per_litre',715664),('Nissan 1995','Nissan',1995,11.3431,'kilometres_per_litre',863854),('Nissan 1996','Nissan',1996,12.0735,'kilometres_per_litre',675475),('Nissan 1997','Nissan',1997,11.5739,'kilometres_per_litre',803112),('Nissan 1998','Nissan',1998,11.8112,'kilometres_per_litre',610907),('Nissan 1999','Nissan',1999,11.6128,'kilometres_per_litre',574095),('Nissan 2000','Nissan',2000,10.6064,'kilometres_per_litre',805038),('Nissan 2001','Nissan',2001,10.5242,'kilometres_per_litre',751316),('Nissan 2002','Nissan',2002,11.005,'kilometres_per_litre',731458),('Nissan 2003','Nissan',2003,10.9993,'kilometres_per_litre',787709),('Nissan 2004','Nissan',2004,10.5251,'kilometres_per_litre',966286),('Nissan 2005','Nissan',2005,11.2475,'kilometres_per_litre',1119308),('Nissan 2006','Nissan',2006,11.2297,'kilometres_per_litre',1076456),('Nissan 2007','Nissan',2007,12.0686,'kilometres_per_litre',912931),('Nissan 2008','Nissan',2008,12.402,'kilometres_per_litre',1023415),('Nissan 2009','Nissan',2009,13.1728,'kilometres_per_litre',840322),('Nissan 2010','Nissan',2010,9.21775,'kilometres_per_litre',NULL),('Oldsmobile 1985','Oldsmobile',1985,9.28061,'kilometres_per_litre',NULL),('Oldsmobile 1986','Oldsmobile',1986,9.25971,'kilometres_per_litre',NULL),('Oldsmobile 1987','Oldsmobile',1987,9.44188,'kilometres_per_litre',NULL),('Oldsmobile 1988','Oldsmobile',1988,9.99955,'kilometres_per_litre',NULL),('Oldsmobile 1989','Oldsmobile',1989,9.47633,'kilometres_per_litre',NULL),('Oldsmobile 1990','Oldsmobile',1990,9.28592,'kilometres_per_litre',NULL),('Oldsmobile 1991','Oldsmobile',1991,8.9943,'kilometres_per_litre',NULL),('Oldsmobile 1992','Oldsmobile',1992,8.74705,'kilometres_per_litre',NULL),('Oldsmobile 1993','Oldsmobile',1993,8.96742,'kilometres_per_litre',NULL),('Oldsmobile 1994','Oldsmobile',1994,9.09099,'kilometres_per_litre',NULL),('Oldsmobile 1995','Oldsmobile',1995,8.95898,'kilometres_per_litre',NULL),('Oldsmobile 1996','Oldsmobile',1996,9.14672,'kilometres_per_litre',NULL),('Oldsmobile 1997','Oldsmobile',1997,8.89558,'kilometres_per_litre',NULL),('Oldsmobile 1998','Oldsmobile',1998,9.11375,'kilometres_per_litre',NULL),('Oldsmobile 1999','Oldsmobile',1999,8.84636,'kilometres_per_litre',NULL),('Oldsmobile 2000','Oldsmobile',2000,8.98075,'kilometres_per_litre',NULL),('Oldsmobile 2001','Oldsmobile',2001,8.88125,'kilometres_per_litre',NULL),('Oldsmobile 2002','Oldsmobile',2002,8.89331,'kilometres_per_litre',NULL),('Oldsmobile 2003','Oldsmobile',2003,8.88591,'kilometres_per_litre',NULL),('Oldsmobile 2004','Oldsmobile',2004,9.1125,'kilometres_per_litre',NULL),('Panoz 1995','Panoz',1995,10.3735,'kilometres_per_litre',9),('Panther 1986','Panther',1986,11.6489,'kilometres_per_litre',85),('Panther 1988','Panther',1988,8.89346,'kilometres_per_litre',NULL),('Peugeot 1985','Peugeot',1985,10.7136,'kilometres_per_litre',20847),('Peugeot 1986','Peugeot',1986,10.5436,'kilometres_per_litre',13218),('Peugeot 1987','Peugeot',1987,10.246,'kilometres_per_litre',8080),('Peugeot 1988','Peugeot',1988,10.0334,'kilometres_per_litre',4019),('Peugeot 1989','Peugeot',1989,10.8412,'kilometres_per_litre',9756),('Peugeot 1990','Peugeot',1990,10.8412,'kilometres_per_litre',725),('Peugeot 1991','Peugeot',1991,11.1813,'kilometres_per_litre',3211),('Peugeot 1992','Peugeot',1992,10.6286,'kilometres_per_litre',467),('Pininfarina 1985','Pininfarina',1985,11.904,'kilometres_per_litre',600),('Plymouth 1985','Plymouth',1985,9.91128,'kilometres_per_litre',NULL),('Plymouth 1986','Plymouth',1986,10.2025,'kilometres_per_litre',NULL),('Plymouth 1987','Plymouth',1987,9.62211,'kilometres_per_litre',NULL),('Plymouth 1988','Plymouth',1988,10.1357,'kilometres_per_litre',NULL),('Plymouth 1989','Plymouth',1989,9.77074,'kilometres_per_litre',NULL),('Plymouth 1990','Plymouth',1990,9.7268,'kilometres_per_litre',NULL),('Plymouth 1991','Plymouth',1991,9.53266,'kilometres_per_litre',NULL),('Plymouth 1992','Plymouth',1992,9.38175,'kilometres_per_litre',NULL),('Plymouth 1993','Plymouth',1993,9.62689,'kilometres_per_litre',NULL),('Plymouth 1994','Plymouth',1994,9.36199,'kilometres_per_litre',NULL),('Plymouth 1995','Plymouth',1995,8.9552,'kilometres_per_litre',NULL),('Plymouth 1996','Plymouth',1996,9.51456,'kilometres_per_litre',NULL),('Plymouth 1997','Plymouth',1997,9.88698,'kilometres_per_litre',NULL),('Plymouth 1998','Plymouth',1998,9.94233,'kilometres_per_litre',NULL),('Plymouth 1999','Plymouth',1999,9.42332,'kilometres_per_litre',NULL),('Plymouth 2000','Plymouth',2000,9.3148,'kilometres_per_litre',NULL),('Plymouth 2001','Plymouth',2001,9.87144,'kilometres_per_litre',NULL),('Pontiac 1985','Pontiac',1985,9.81633,'kilometres_per_litre',NULL),('Pontiac 1986','Pontiac',1986,9.85523,'kilometres_per_litre',NULL),('Pontiac 1987','Pontiac',1987,9.96324,'kilometres_per_litre',NULL),('Pontiac 1988','Pontiac',1988,10.243,'kilometres_per_litre',NULL),('Pontiac 1989','Pontiac',1989,10.5119,'kilometres_per_litre',NULL),('Pontiac 1990','Pontiac',1990,10.035,'kilometres_per_litre',NULL),('Pontiac 1991','Pontiac',1991,9.87509,'kilometres_per_litre',NULL),('Pontiac 1992','Pontiac',1992,9.69228,'kilometres_per_litre',NULL),('Pontiac 1993','Pontiac',1993,9.45606,'kilometres_per_litre',NULL),('Pontiac 1994','Pontiac',1994,9.7814,'kilometres_per_litre',NULL),('Pontiac 1995','Pontiac',1995,9.04874,'kilometres_per_litre',NULL),('Pontiac 1996','Pontiac',1996,9.5055,'kilometres_per_litre',NULL),('Pontiac 1997','Pontiac',1997,9.53934,'kilometres_per_litre',NULL),('Pontiac 1998','Pontiac',1998,9.40713,'kilometres_per_litre',NULL),('Pontiac 1999','Pontiac',1999,9.32551,'kilometres_per_litre',NULL),('Pontiac 2000','Pontiac',2000,9.42213,'kilometres_per_litre',NULL),('Pontiac 2001','Pontiac',2001,9.35899,'kilometres_per_litre',NULL),('Pontiac 2002','Pontiac',2002,9.45125,'kilometres_per_litre',NULL),('Pontiac 2003','Pontiac',2003,9.93001,'kilometres_per_litre',NULL),('Pontiac 2004','Pontiac',2004,9.74861,'kilometres_per_litre',NULL),('Pontiac 2005','Pontiac',2005,9.99351,'kilometres_per_litre',NULL),('Pontiac 2006','Pontiac',2006,9.38137,'kilometres_per_litre',NULL),('Pontiac 2007','Pontiac',2007,9.76947,'kilometres_per_litre',NULL),('Pontiac 2008','Pontiac',2008,9.85755,'kilometres_per_litre',NULL),('Pontiac 2009','Pontiac',2009,10.5583,'kilometres_per_litre',NULL),('Pontiac 2010','Pontiac',2010,11.0088,'kilometres_per_litre',NULL),('Porsche 1986','Porsche',1986,10.7986,'kilometres_per_litre',27448),('Porsche 1987','Porsche',1987,10.7986,'kilometres_per_litre',31616),('Porsche 1988','Porsche',1988,10.501,'kilometres_per_litre',16137),('Porsche 1989','Porsche',1989,9.77831,'kilometres_per_litre',10715),('Porsche 1990','Porsche',1990,9.22562,'kilometres_per_litre',7013),('Porsche 1991','Porsche',1991,9.05556,'kilometres_per_litre',6037),('Porsche 1992','Porsche',1992,9.52322,'kilometres_per_litre',3065),('Porsche 1993','Porsche',1993,9.56573,'kilometres_per_litre',2674),('Porsche 1994','Porsche',1994,9.39568,'kilometres_per_litre',2980),('Porsche 1995','Porsche',1995,9.65076,'kilometres_per_litre',8123),('Porsche 1996','Porsche',1996,9.14059,'kilometres_per_litre',7092),('Porsche 1997','Porsche',1997,9.86333,'kilometres_per_litre',11748),('Porsche 1998','Porsche',1998,10.416,'kilometres_per_litre',9781),('Porsche 1999','Porsche',1999,10.246,'kilometres_per_litre',26121),('Porsche 2000','Porsche',2000,10.331,'kilometres_per_litre',21141),('Porsche 2001','Porsche',2001,10.0759,'kilometres_per_litre',23910),('Porsche 2002','Porsche',2002,10.1609,'kilometres_per_litre',22009),('Porsche 2003','Porsche',2003,10.0733,'kilometres_per_litre',19184),('Porsche 2004','Porsche',2004,8.56143,'kilometres_per_litre',37990),('Porsche 2005','Porsche',2005,9.19008,'kilometres_per_litre',28913),('Porsche 2006','Porsche',2006,9.77841,'kilometres_per_litre',41738),('Porsche 2007','Porsche',2007,11.2663,'kilometres_per_litre',22500),('Porsche 2008','Porsche',2008,9.86738,'kilometres_per_litre',37706),('Porsche 2009','Porsche',2009,10.2965,'kilometres_per_litre',19993),('Porsche 2010','Porsche',2010,8.68882,'kilometres_per_litre',NULL),('Quantum 2002','Quantum',2002,12.8393,'kilometres_per_litre',1483),('Quantum 2003','Quantum',2003,13.7747,'kilometres_per_litre',313),('Quantum 2004','Quantum',2004,13.7321,'kilometres_per_litre',391),('Qvale 2000','Qvale',2000,7.8845,'kilometres_per_litre',NULL),('Renault 1985','Renault',1985,14.3699,'kilometres_per_litre',141023),('Renault 1986','Renault',1986,10.9262,'kilometres_per_litre',3),('Renault 1987','Renault',1987,11.74,'kilometres_per_litre',NULL),('Rolls-Royce 1985','Rolls-Royce',1985,4.76161,'kilometres_per_litre',1128),('Rolls-Royce 1986','Rolls-Royce',1986,4.7191,'kilometres_per_litre',1019),('Rolls-Royce 1987','Rolls-Royce',1987,4.84664,'kilometres_per_litre',1168),('Rolls-Royce 1988','Rolls-Royce',1988,5.27178,'kilometres_per_litre',1216),('Rolls-Royce 1989','Rolls-Royce',1989,5.3143,'kilometres_per_litre',1430),('Rolls-Royce 1990','Rolls-Royce',1990,5.6119,'kilometres_per_litre',901),('Rolls-Royce 1991','Rolls-Royce',1991,5.65441,'kilometres_per_litre',853),('Rolls-Royce 1992','Rolls-Royce',1992,6.07956,'kilometres_per_litre',96),('Rolls-Royce 1993','Rolls-Royce',1993,5.99453,'kilometres_per_litre',389),('Rolls-Royce 1994','Rolls-Royce',1994,5.99453,'kilometres_per_litre',281),('Rolls-Royce 1995','Rolls-Royce',1995,6.03704,'kilometres_per_litre',281),('Rolls-Royce 1996','Rolls-Royce',1996,6.63224,'kilometres_per_litre',470),('Rolls-Royce 1997','Rolls-Royce',1997,6.41967,'kilometres_per_litre',445),('Rolls-Royce 1998','Rolls-Royce',1998,5.02877,'kilometres_per_litre',NULL),('Rolls-Royce 1999','Rolls-Royce',1999,5.22343,'kilometres_per_litre',NULL),('Rolls-Royce 2000','Rolls-Royce',2000,5.30778,'kilometres_per_litre',NULL),('Rolls-Royce 2001','Rolls-Royce',2001,5.41449,'kilometres_per_litre',NULL),('Rolls-Royce 2002','Rolls-Royce',2002,5.56381,'kilometres_per_litre',NULL),('Rolls-Royce 2004','Rolls-Royce',2004,5.99172,'kilometres_per_litre',NULL),('Rolls-Royce 2005','Rolls-Royce',2005,5.95238,'kilometres_per_litre',NULL),('Rolls-Royce 2006','Rolls-Royce',2006,5.95238,'kilometres_per_litre',NULL),('Rolls-Royce 2007','Rolls-Royce',2007,6.05815,'kilometres_per_litre',NULL),('Rolls-Royce 2008','Rolls-Royce',2008,6.05815,'kilometres_per_litre',NULL),('Rolls-Royce 2009','Rolls-Royce',2009,6.05815,'kilometres_per_litre',NULL),('Rolls-Royce 2010','Rolls-Royce',2010,6.20408,'kilometres_per_litre',NULL),('Roush Industries, Inc. 2010','Roush Industries, Inc.',2010,7.66709,'kilometres_per_litre',NULL),('Rover 1987','Rover',1987,6.97236,'kilometres_per_litre',1761),('Rover 1988','Rover',1988,7.0999,'kilometres_per_litre',3957),('Rover 1989','Rover',1989,6.54721,'kilometres_per_litre',4323),('Rover 1990','Rover',1990,6.92984,'kilometres_per_litre',4862),('Rover 1991','Rover',1991,6.92984,'kilometres_per_litre',3718),('Rover 1993','Rover',1993,6.58973,'kilometres_per_litre',4468),('Rover 1994','Rover',1994,6.97236,'kilometres_per_litre',8463),('Rover 1995','Rover',1995,6.92984,'kilometres_per_litre',20926),('Rover 1996','Rover',1996,7.31247,'kilometres_per_litre',24742),('Saab 1985','Saab',1985,11.2238,'kilometres_per_litre',39858),('Saab 1986','Saab',1986,11.1813,'kilometres_per_litre',48300),('Saab 1987','Saab',1987,11.1388,'kilometres_per_litre',53354),('Saab 1988','Saab',1988,11.2663,'kilometres_per_litre',44658),('Saab 1989','Saab',1989,11.3088,'kilometres_per_litre',35427),('Saab 1990','Saab',1990,8.73979,'kilometres_per_litre',NULL),('Saab 1991','Saab',1991,8.54415,'kilometres_per_litre',NULL),('Saab 1992','Saab',1992,8.42591,'kilometres_per_litre',NULL),('Saab 1993','Saab',1993,8.42797,'kilometres_per_litre',NULL),('Saab 1994','Saab',1994,8.6027,'kilometres_per_litre',NULL),('Saab 1995','Saab',1995,8.90394,'kilometres_per_litre',NULL),('Saab 1997','Saab',1997,8.75264,'kilometres_per_litre',NULL),('Saab 1998','Saab',1998,8.88975,'kilometres_per_litre',NULL),('Saab 1999','Saab',1999,8.80641,'kilometres_per_litre',NULL),('Saab 2000','Saab',2000,9.01449,'kilometres_per_litre',NULL),('Saab 2001','Saab',2001,9.2611,'kilometres_per_litre',NULL),('Saab 2002','Saab',2002,9.44335,'kilometres_per_litre',NULL),('Saab 2003','Saab',2003,9.5124,'kilometres_per_litre',NULL),('Saab 2004','Saab',2004,9.39547,'kilometres_per_litre',NULL),('Saab 2005','Saab',2005,9.39038,'kilometres_per_litre',NULL),('Saab 2006','Saab',2006,8.94132,'kilometres_per_litre',NULL),('Saab 2007','Saab',2007,8.91643,'kilometres_per_litre',NULL),('Saab 2008','Saab',2008,8.56056,'kilometres_per_litre',NULL),('Saab 2009','Saab',2009,7.94484,'kilometres_per_litre',NULL),('Saab 2010','Saab',2010,9.98362,'kilometres_per_litre',NULL),('Saleen 1989','Saleen',1989,7.04122,'kilometres_per_litre',NULL),('Saleen 1990','Saleen',1990,7.04122,'kilometres_per_litre',NULL),('Saleen 1995','Saleen',1995,7.31247,'kilometres_per_litre',111),('Saleen 2008','Saleen',2008,5.91753,'kilometres_per_litre',NULL),('Saleen 2009','Saleen',2009,6.12652,'kilometres_per_litre',NULL),('Saturn 1991','Saturn',1991,11.0095,'kilometres_per_litre',NULL),('Saturn 1992','Saturn',1992,11.101,'kilometres_per_litre',NULL),('Saturn 1993','Saturn',1993,11.3659,'kilometres_per_litre',NULL),('Saturn 1994','Saturn',1994,11.3858,'kilometres_per_litre',NULL),('Saturn 1995','Saturn',1995,11.6934,'kilometres_per_litre',NULL),('Saturn 1996','Saturn',1996,11.7525,'kilometres_per_litre',NULL),('Saturn 1997','Saturn',1997,11.8567,'kilometres_per_litre',NULL),('Saturn 1998','Saturn',1998,11.7442,'kilometres_per_litre',NULL),('Saturn 1999','Saturn',1999,11.9827,'kilometres_per_litre',NULL),('Saturn 2000','Saturn',2000,11.3249,'kilometres_per_litre',NULL),('Saturn 2001','Saturn',2001,11.3494,'kilometres_per_litre',NULL),('Saturn 2002','Saturn',2002,10.8368,'kilometres_per_litre',NULL),('Saturn 2003','Saturn',2003,9.89105,'kilometres_per_litre',NULL),('Saturn 2004','Saturn',2004,9.97632,'kilometres_per_litre',NULL),('Saturn 2005','Saturn',2005,9.47382,'kilometres_per_litre',NULL),('Saturn 2006','Saturn',2006,9.74504,'kilometres_per_litre',NULL),('Saturn 2007','Saturn',2007,9.61166,'kilometres_per_litre',NULL),('Saturn 2008','Saturn',2008,9.77864,'kilometres_per_litre',NULL),('Saturn 2009','Saturn',2009,9.90289,'kilometres_per_litre',NULL),('Saturn 2010','Saturn',2010,9.42835,'kilometres_per_litre',NULL),('Shelby 1986','Shelby',1986,8.68825,'kilometres_per_litre',NULL),('Shelby 1987','Shelby',1987,8.2673,'kilometres_per_litre',NULL),('Shelby 1989','Shelby',1989,7.43355,'kilometres_per_litre',NULL),('Shelby 2008','Shelby',2008,7.68237,'kilometres_per_litre',NULL),('Spyker 2007','Spyker',2007,8.33282,'kilometres_per_litre',7),('Spyker 2009','Spyker',2009,8.2903,'kilometres_per_litre',50),('Subaru 1985','Subaru',1985,13.1835,'kilometres_per_litre',175930),('Subaru 1986','Subaru',1986,12.9281,'kilometres_per_litre',212287),('Subaru 1987','Subaru',1987,12.6477,'kilometres_per_litre',183262),('Subaru 1988','Subaru',1988,13.4195,'kilometres_per_litre',158075),('Subaru 1989','Subaru',1989,13.5311,'kilometres_per_litre',95561),('Subaru 1990','Subaru',1990,12.0239,'kilometres_per_litre',131431),('Subaru 1991','Subaru',1991,12.1176,'kilometres_per_litre',100828),('Subaru 1992','Subaru',1992,12.0183,'kilometres_per_litre',113998),('Subaru 1993','Subaru',1993,12.5734,'kilometres_per_litre',129583),('Subaru 1994','Subaru',1994,12.1081,'kilometres_per_litre',49642),('Subaru 1995','Subaru',1995,12.2867,'kilometres_per_litre',109415),('Subaru 1996','Subaru',1996,11.7765,'kilometres_per_litre',96741),('Subaru 1997','Subaru',1997,12.0316,'kilometres_per_litre',118831),('Subaru 1998','Subaru',1998,11.819,'kilometres_per_litre',156741),('Subaru 1999','Subaru',1999,11.7765,'kilometres_per_litre',157637),('Subaru 2000','Subaru',2000,11.9891,'kilometres_per_litre',143518),('Subaru 2001','Subaru',2001,11.904,'kilometres_per_litre',170843),('Subaru 2002','Subaru',2002,11.734,'kilometres_per_litre',203295),('Subaru 2003','Subaru',2003,11.6902,'kilometres_per_litre',188848),('Subaru 2004','Subaru',2004,11.5537,'kilometres_per_litre',164907),('Subaru 2005','Subaru',2005,11.7733,'kilometres_per_litre',212500),('Subaru 2006','Subaru',2006,11.6673,'kilometres_per_litre',213419),('Subaru 2007','Subaru',2007,11.9464,'kilometres_per_litre',152431),('Subaru 2008','Subaru',2008,12.0095,'kilometres_per_litre',198580),('Subaru 2009','Subaru',2009,12.2302,'kilometres_per_litre',224298),('Subaru 2010','Subaru',2010,9.43958,'kilometres_per_litre',NULL),('Suzuki 1985','Suzuki',1985,19.6063,'kilometres_per_litre',13568),('Suzuki 1986','Suzuki',1986,15.9663,'kilometres_per_litre',47775),('Suzuki 1987','Suzuki',1987,14.5708,'kilometres_per_litre',67678),('Suzuki 1988','Suzuki',1988,14.4243,'kilometres_per_litre',86295),('Suzuki 1989','Suzuki',1989,14.0157,'kilometres_per_litre',40200),('Suzuki 1990','Suzuki',1990,16.588,'kilometres_per_litre',24045),('Suzuki 1991','Suzuki',1991,16.0476,'kilometres_per_litre',40700),('Suzuki 1992','Suzuki',1992,16.0087,'kilometres_per_litre',35756),('Suzuki 1993','Suzuki',1993,15.5896,'kilometres_per_litre',36949),('Suzuki 1994','Suzuki',1994,14.5988,'kilometres_per_litre',42370),('Suzuki 1995','Suzuki',1995,13.2066,'kilometres_per_litre',41977),('Suzuki 1996','Suzuki',1996,12.8187,'kilometres_per_litre',31902),('Suzuki 1997','Suzuki',1997,12.7454,'kilometres_per_litre',33334),('Suzuki 1998','Suzuki',1998,13.4844,'kilometres_per_litre',37383),('Suzuki 1999','Suzuki',1999,11.6727,'kilometres_per_litre',51854),('Suzuki 2000','Suzuki',2000,11.7194,'kilometres_per_litre',58822),('Suzuki 2001','Suzuki',2001,11.2447,'kilometres_per_litre',69011),('Suzuki 2002','Suzuki',2002,10.9148,'kilometres_per_litre',73597),('Suzuki 2003','Suzuki',2003,11.8181,'kilometres_per_litre',63360),('Suzuki 2004','Suzuki',2004,11.5503,'kilometres_per_litre',88919),('Suzuki 2005','Suzuki',2005,11.7889,'kilometres_per_litre',85654),('Suzuki 2006','Suzuki',2006,11.7575,'kilometres_per_litre',116595),('Suzuki 2007','Suzuki',2007,11.6877,'kilometres_per_litre',111247),('Suzuki 2008','Suzuki',2008,12.1502,'kilometres_per_litre',111271),('Suzuki 2009','Suzuki',2009,13.0273,'kilometres_per_litre',35005),('Suzuki 2010','Suzuki',2010,10.3047,'kilometres_per_litre',NULL),('TCSTR 2008','TCSTR',2008,5.51797,'kilometres_per_litre',NULL),('Toyota 1985','Toyota',1985,13.5141,'kilometres_per_litre',694979),('Toyota 1986','Toyota',1986,13.1538,'kilometres_per_litre',800468),('Toyota 1987','Toyota',1987,13.4111,'kilometres_per_litre',796084),('Toyota 1988','Toyota',1988,13.2884,'kilometres_per_litre',803914),('Toyota 1989','Toyota',1989,12.979,'kilometres_per_litre',867386),('Toyota 1990','Toyota',1990,12.4114,'kilometres_per_litre',876992),('Toyota 1991','Toyota',1991,12.4026,'kilometres_per_litre',883368),('Toyota 1992','Toyota',1992,11.6232,'kilometres_per_litre',1069268),('Toyota 1993','Toyota',1993,11.5717,'kilometres_per_litre',1082589),('Toyota 1994','Toyota',1994,11.4697,'kilometres_per_litre',1113790),('Toyota 1995','Toyota',1995,11.8309,'kilometres_per_litre',1087079),('Toyota 1996','Toyota',1996,11.8194,'kilometres_per_litre',1076799),('Toyota 1997','Toyota',1997,11.7626,'kilometres_per_litre',1182923),('Toyota 1998','Toyota',1998,11.898,'kilometres_per_litre',1288755),('Toyota 1999','Toyota',1999,11.7578,'kilometres_per_litre',1470667),('Toyota 2000','Toyota',2000,11.5045,'kilometres_per_litre',1657145),('Toyota 2001','Toyota',2001,11.571,'kilometres_per_litre',1638619),('Toyota 2002','Toyota',2002,11.4206,'kilometres_per_litre',1760356),('Toyota 2003','Toyota',2003,12.0047,'kilometres_per_litre',1851712),('Toyota 2004','Toyota',2004,11.7488,'kilometres_per_litre',2074897),('Toyota 2005','Toyota',2005,12.8284,'kilometres_per_litre',2309788),('Toyota 2006','Toyota',2006,12.565,'kilometres_per_litre',2278062),('Toyota 2007','Toyota',2007,13.1857,'kilometres_per_litre',2841152),('Toyota 2008','Toyota',2008,12.9289,'kilometres_per_litre',2211500),('Toyota 2009','Toyota',2009,14.33,'kilometres_per_litre',1755974),('Toyota 2010','Toyota',2010,9.62276,'kilometres_per_litre',NULL),('TVR 1985','TVR',1985,7.80257,'kilometres_per_litre',NULL),('TVR 1986','TVR',1986,7.80257,'kilometres_per_litre',NULL),('Vector 1996','Vector',1996,4.21269,'kilometres_per_litre',NULL),('Vector 1997','Vector',1997,4.21269,'kilometres_per_litre',NULL),('Vector CORP 1992','Vector CORP',1992,3.52924,'kilometres_per_litre',NULL),('Vector CORP 1993','Vector CORP',1993,3.52924,'kilometres_per_litre',NULL),('Volkswagen 1985','Volkswagen',1985,12.6967,'kilometres_per_litre',276530),('Volkswagen 1986','Volkswagen',1986,12.4996,'kilometres_per_litre',277725),('Volkswagen 1987','Volkswagen',1987,12.5565,'kilometres_per_litre',247856),('Volkswagen 1988','Volkswagen',1988,12.8844,'kilometres_per_litre',204307),('Volkswagen 1989','Volkswagen',1989,12.8232,'kilometres_per_litre',151439),('Volkswagen 1990','Volkswagen',1990,12.203,'kilometres_per_litre',153861),('Volkswagen 1991','Volkswagen',1991,12.5512,'kilometres_per_litre',115165),('Volkswagen 1992','Volkswagen',1992,12.4142,'kilometres_per_litre',84631),('Volkswagen 1993','Volkswagen',1993,11.1694,'kilometres_per_litre',71153),('Volkswagen 1994','Volkswagen',1994,12.1045,'kilometres_per_litre',74667),('Volkswagen 1995','Volkswagen',1995,12.2781,'kilometres_per_litre',141820),('Volkswagen 1996','Volkswagen',1996,12.1591,'kilometres_per_litre',156504),('Volkswagen 1997','Volkswagen',1997,12.2858,'kilometres_per_litre',164717),('Volkswagen 1998','Volkswagen',1998,12.3292,'kilometres_per_litre',219273),('Volkswagen 1999','Volkswagen',1999,12.1294,'kilometres_per_litre',347385),('Volkswagen 2000','Volkswagen',2000,12.2144,'kilometres_per_litre',394362),('Volkswagen 2001','Volkswagen',2001,12.0396,'kilometres_per_litre',469432),('Volkswagen 2002','Volkswagen',2002,12.4471,'kilometres_per_litre',422032),('Volkswagen 2003','Volkswagen',2003,12.586,'kilometres_per_litre',430191),('Volkswagen 2004','Volkswagen',2004,11.803,'kilometres_per_litre',359324),('Volkswagen 2005','Volkswagen',2005,12.0474,'kilometres_per_litre',270952),('Volkswagen 2006','Volkswagen',2006,12.6475,'kilometres_per_litre',347799),('Volkswagen 2007','Volkswagen',2007,11.8659,'kilometres_per_litre',317305),('Volkswagen 2008','Volkswagen',2008,12.0509,'kilometres_per_litre',318482),('Volkswagen 2009','Volkswagen',2009,12.8952,'kilometres_per_litre',292287),('Volkswagen 2010','Volkswagen',2010,10.8805,'kilometres_per_litre',NULL),('Volvo 1985','Volvo',1985,11.5639,'kilometres_per_litre',99752),('Volvo 1986','Volvo',1986,11.3939,'kilometres_per_litre',115364),('Volvo 1987','Volvo',1987,11.2238,'kilometres_per_litre',112600),('Volvo 1988','Volvo',1988,11.0537,'kilometres_per_litre',94925),('Volvo 1989','Volvo',1989,10.6286,'kilometres_per_litre',105369),('Volvo 1990','Volvo',1990,10.6711,'kilometres_per_litre',102037),('Volvo 1991','Volvo',1991,10.7561,'kilometres_per_litre',70622),('Volvo 1992','Volvo',1992,10.8837,'kilometres_per_litre',56437),('Volvo 1993','Volvo',1993,11.0112,'kilometres_per_litre',72060),('Volvo 1994','Volvo',1994,10.9262,'kilometres_per_litre',79707),('Volvo 1995','Volvo',1995,11.0537,'kilometres_per_litre',85009),('Volvo 1996','Volvo',1996,11.0963,'kilometres_per_litre',79065),('Volvo 1997','Volvo',1997,10.9687,'kilometres_per_litre',60731),('Volvo 1998','Volvo',1998,10.8837,'kilometres_per_litre',102288),('Volvo 1999','Volvo',1999,8.89227,'kilometres_per_litre',NULL),('Volvo 2000','Volvo',2000,8.85926,'kilometres_per_litre',NULL),('Volvo 2001','Volvo',2001,9.12035,'kilometres_per_litre',NULL),('Volvo 2002','Volvo',2002,9.1014,'kilometres_per_litre',NULL),('Volvo 2003','Volvo',2003,8.908,'kilometres_per_litre',NULL),('Volvo 2004','Volvo',2004,8.95719,'kilometres_per_litre',NULL),('Volvo 2005','Volvo',2005,8.99189,'kilometres_per_litre',NULL),('Volvo 2006','Volvo',2006,9.11079,'kilometres_per_litre',NULL),('Volvo 2007','Volvo',2007,8.93383,'kilometres_per_litre',NULL),('Volvo 2008','Volvo',2008,9.13992,'kilometres_per_litre',NULL),('Volvo 2009','Volvo',2009,9.12173,'kilometres_per_litre',NULL),('Volvo 2010','Volvo',2010,9.23373,'kilometres_per_litre',NULL),('Yugo 1986','Yugo',1986,13.6471,'kilometres_per_litre',35671),('Yugo 1987','Yugo',1987,14.4124,'kilometres_per_litre',48753),('Yugo 1988','Yugo',1988,14.4549,'kilometres_per_litre',42543),('Yugo 1989','Yugo',1989,14.5824,'kilometres_per_litre',2704),('Yugo 1990','Yugo',1990,14.4549,'kilometres_per_litre',1117); 43 | /*!40000 ALTER TABLE `automobile_make_years` ENABLE KEYS */; 44 | UNLOCK TABLES; 45 | /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; 46 | 47 | /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 48 | /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 49 | /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 50 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 51 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 52 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 53 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 54 | 55 | -- Dump completed on 2011-02-08 8:56:16 56 | --------------------------------------------------------------------------------