require ‘data_task/adapters/postgres’ require ‘data_task/adapters/sqlite’
# set up adapters to two databases postgres = Rake::DataTask::Postgres.new
(
'host' => 'localhost', 'port' => 5432, 'database' => 'example', 'username' => 'postgres')
sqlite = Rake::DataTask::Sqlite.new
(‘database’ => ‘example’)
desc “Build a data file.” file ‘raw.txt’ do
File.open('raw.txt', 'w') { |file| file.write("v1") }
end
desc “Load a data file into PostgreSQL for analysis.” data postgres => ‘raw.txt’ do
postgres.create_table "raw", nil, "(var1 text)" postgres.execute "copy raw from '#{File.expand_path('raw.txt',Dir.pwd)}'"
end
desc “Perform analysis in PostgreSQL.” data postgres => postgres do
# perform analysis ... postgres.create_table "analyzed", "select * from raw", nil
end
desc “Archive analysis results in SQLite.” data sqlite => postgres do
sqlite.create_table "analyzed_archive", nil, "(var1 text)" r = postgres.execute "select var1 from analyzed" sqlite.execute <<-EOSQL insert into analyzed_archive values ('#{ r.flatten.join("'),('") }') EOSQL
end