Class: MultitenancyTools::TableDumper
- Inherits:
-
Object
- Object
- MultitenancyTools::TableDumper
- Defined in:
- lib/multitenancy_tools/table_dumper.rb
Overview
TableDumper can be used to generate SQL dumps of the structure and, unlike SchemaDumper, the data of a PostgreSQL table. It requires pg_dump.
The generated dump DOES NOT contain:
-
privilege statements (GRANT/REVOKE)
-
tablespace assigments
-
ownership information
The dump will use INSERTs instead of COPY statements.
Instance Method Summary collapse
-
#dump_to(file, mode: 'w') ⇒ Object
Generates a dump an writes it into a file.
-
#initialize(database, schema, table, options = {}) ⇒ TableDumper
constructor
A new instance of TableDumper.
Constructor Details
#initialize(database, schema, table, options = {}) ⇒ TableDumper
Returns a new instance of TableDumper.
23 24 25 26 27 28 29 |
# File 'lib/multitenancy_tools/table_dumper.rb', line 23 def initialize(database, schema, table, = {}) @database = database @schema = schema @table = table @host = .fetch(:host, '') @username = .fetch(:username, '') end |
Instance Method Details
#dump_to(file, mode: 'w') ⇒ Object
Generates a dump an writes it into a file. Please see IO.new for open modes.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/multitenancy_tools/table_dumper.rb', line 38 def dump_to(file, mode: 'w') stdout, stderr, status = Dump::DataOnly.new( table: @table, schema: @schema, database: @database, host: @host, username: @username ).dump fail(PgDumpError, stderr) unless status.success? File.open(file, mode) do |f| f.write DumpCleaner.new(stdout, @schema).clean end end |