Sha256: a6e2cd46ea9535231c71a790d3a7bafac3a8f4be4aa8ece1281e6bed25763fce
Contents?: true
Size: 1.02 KB
Versions: 5
Compression:
Stored size: 1.02 KB
Contents
# frozen_string_literal: true require 'sqlite3' require 'csv' # Open a SQlite DB, work with it in-memory and save back to disk class SqliteRam attr_reader :filename, :conn def initialize(sqlite_filename) @filename = sqlite_filename @ram_db = SQLite3::Database.new(':memory:') @file_db = SQLite3::Database.new(sqlite_filename) @conn = @ram_db end def save_to_disk backup = SQLite3::Backup.new(@file_db, 'main', @ram_db, 'main') backup.step(-1) backup.finish end def dump_tables(path) tables = conn.execute('select name from sqlite_master where type = "table"') sql = nil tables.each do |table_array| table = table_array.first headers_sql = "pragma table_info('#{table}')" header = conn.execute(headers_sql).map { |e| e[1] } CSV.open(File.join(path, "#{table}.csv"), 'w') do |csv| csv << header sql = "select * from #{table}" conn.execute(sql).each do |row_array| csv << row_array end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems