struct

Triki::Postgres

Inherits Triki::ConfigScaffoldGenerator / Triki::Base / Struct / Value / Object

PostgreSQL dump parser and writer.

Handles COPY ... FROM stdin statements produced by pg_dump.

Instance methods

make_insert_statement(table_name : String, column_names : ColumnList, values : Array(Array(RowContent)), ignore = false) : String

Reassembles an INSERT/COPY statement from the given rows.

Source
make_valid_value_string(value : RowContent) : RowContent

Quotes or formats a single value for the target database dialect.

Source
parse(obfuscator : Triki, config : ConfigHash, input_io : IO, output_io : IO) : Nil

Postgres uses COPY statements instead of INSERT and look like:

COPY some_table (a, b, c, d) FROM stdin; 1 2 3 4 5 6 7 8 .

This requires the parse methods to persist data (table name and column names) across multiple lines.

Source
rows_to_be_inserted(line : String) : Array(Array(String | Nil))

Copy statements contain the column values tab separated like so: blah blah blah blah which we want to turn into: [['blah','blah','blah','blah']]

We wrap it in an array to keep it consistent with MySql bulk obfuscation (multiple rows per insert statement)

Source
table_data(line)
Source