Sha256: a43a9a3ecba3afb88bc8536746d7ebe10e0b60665766573d199ba49040f00a19
Contents?: true
Size: 1.17 KB
Versions: 1
Compression:
Stored size: 1.17 KB
Contents
class MyObfuscate class Postgres include MyObfuscate::CopyStatementParser # Copy statements contain the column values tab seperated 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) def rows_to_be_inserted(line) row = line.split(/\t/) row.last && row.last.strip! row.collect! do |value| if value == "\\N" nil else value end end [row] end def parse_copy_statement(line) if regex_match = /^\s*COPY (.*?) \((.*?)\) FROM\s*/i.match(line) { :table_name => regex_match[1].to_sym, :column_names => regex_match[2].split(/\s*,\s*/).map(&:to_sym) } end end def make_insert_statement(table_name, column_names, values) values.join("\t") end def make_valid_value_string(value) if value.nil? "\\N" else value end end def parse_insert_statement(line) /^\s*INSERT INTO/i.match(line) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
my_obfuscate-0.5.2 | lib/my_obfuscate/postgres.rb |