class MultitenancyTools::TableDumper
{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.
@see www.postgresql.org/docs/9.3/static/app-pgdump.html
pg_dump
@example
dumper = MultitenancyTools::TableDumper.new('db name', 'schema name', 'table name') dumper.dump_to('path/to/file.sql')
Public Class Methods
new(database, schema, table, options = {})
click to toggle source
@param database [String] database name @param schema [String] schema name @param table [String] table name
# File lib/multitenancy_tools/table_dumper.rb, line 23 def initialize(database, schema, table, options = {}) @database = database @schema = schema @table = table @host = options.fetch(:host, '') @username = options.fetch(:username, '') end
Public Instance Methods
dump_to(file, mode: 'w')
click to toggle source
Generates a dump an writes it into a file. Please see {IO.new} for open modes.
@see ruby-doc.org/core-2.2.2/IO.html#method-c-new-label-Open+Mode
IO Open Modes
@param file [String] file path @param mode [String] IO open mode
# 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