Class: MysqlToSqlite::Importer
- Inherits:
-
Object
- Object
- MysqlToSqlite::Importer
- Defined in:
- lib/mysql_to_sqlite/importer.rb
Defined Under Namespace
Classes: SourceRecord, TargetRecord
Constant Summary collapse
- INTERNAL_TABLES =
%w[ar_internal_metadata schema_migrations].freeze
Instance Method Summary collapse
-
#initialize(source_url:, destination:, batch_size: 1_000, replace: false, ignore_source_only: false, output: $stdout) ⇒ Importer
constructor
A new instance of Importer.
- #run! ⇒ Object
Constructor Details
#initialize(source_url:, destination:, batch_size: 1_000, replace: false, ignore_source_only: false, output: $stdout) ⇒ Importer
Returns a new instance of Importer.
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/mysql_to_sqlite/importer.rb', line 13 def initialize(source_url:, destination:, batch_size: 1_000, replace: false, ignore_source_only: false, output: $stdout) @source_url = source_url @destination = destination @batch_size = Integer(batch_size) raise ArgumentError, "batch size must be positive" unless @batch_size.positive? @replace = replace @ignore_source_only = ignore_source_only @output = output end |
Instance Method Details
#run! ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/mysql_to_sqlite/importer.rb', line 25 def run! connect! verify_databases! discover_tables! verify_migration_versions! verify_table_sets! verify_table_schemas! report_plan without_target_foreign_keys do TargetRecord.transaction do clear_target! if @replace verify_target_is_empty! reset_target_sequences! tables.each { |table| copy_table(table) } validate! end end output.puts "Import completed successfully." ensure SourceRecord.connection_pool.disconnect! if SourceRecord.connected? TargetRecord.connection_pool.disconnect! if TargetRecord.connected? end |