Class: PG::BinaryEncoder::CopyRow
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
|
|
Instance Chain:
|
|
Inherits: |
PG::CopyEncoder
|
Defined in: | ext/pg_copy_coder.c |
Overview
This class encodes one row of arbitrary columns for transmission as COPY data in binary format. See the COPY command for description of the format.
It is intended to be used in conjunction with Connection#put_copy_data .
The columns are expected as Array
of values. The single values are encoded as defined in the assigned #type_map
. If no type_map was assigned, all values are converted to strings by PG::BinaryEncoder::String
.
Example with default type map ( ::PG::TypeMapAllStrings
):
conn.exec "create table my_table (a text,b int,c bool)"
enco = PG::BinaryEncoder::CopyRow.new
conn.copy_data "COPY my_table FROM STDIN WITH (FORMAT binary)", enco do
conn.put_copy_data ["astring", "\x00\x00\x00\a", "\x00"]
conn.put_copy_data ["string2", "\x00\x00\x00*", "\x01"]
end
This creates my_table
and inserts two rows with binary fields.
The binary format is less portable and less readable than the text format. It is therefore recommended to either manually assign a type encoder for each column per ::PG::TypeMapByColumn
, or to make use of ::PG::BasicTypeMapBasedOnResult
to assign them based on the table OIDs.
Manually assigning a type encoder works per type map like so:
conn.exec "create table my_table (a text,b int,c bool)"
tm = PG::TypeMapByColumn.new( [
PG::BinaryEncoder::String.new,
PG::BinaryEncoder::Int4.new,
PG::BinaryEncoder::Boolean.new] )
enco = PG::BinaryEncoder::CopyRow.new( type_map: tm )
conn.copy_data "COPY my_table FROM STDIN WITH (FORMAT binary)", enco do
conn.put_copy_data ["astring", 7, false]
conn.put_copy_data ["string2", 42, true]
end
See also ::PG::BinaryDecoder::CopyRow
for the decoding direction with Connection#get_copy_data . And see ::PG::TextEncoder::CopyRow
for an encoder of the COPY text format.
Constant Summary
::PG::Coder
- Inherited
FORMAT_ERROR_MASK, FORMAT_ERROR_TO_PARTIAL, FORMAT_ERROR_TO_RAISE, FORMAT_ERROR_TO_STRING, TIMESTAMP_APP_LOCAL, TIMESTAMP_APP_UTC, TIMESTAMP_DB_LOCAL, TIMESTAMP_DB_UTC
Class Method Summary
::PG::Coder
- Inherited
.new | Create a new coder object based on the attribute Hash. |
Instance Attribute Summary
::PG::CopyCoder
- Inherited
#delimiter | The character that separates columns within each row (line) of the file. |
#delimiter= | Specifies the character that separates columns within each row (line) of the file. |
#null_string | The string that represents a null value. |
#null_string= | Specifies the string that represents a null value. |
#type_map | The |
#type_map= | Defines how single columns are encoded or decoded. |
::PG::Coder
- Inherited
#flags | Get current bitwise OR-ed coder flags. |
#flags= | Set coder specific bitwise OR-ed flags. |
#format | The format code that is sent alongside with an encoded query parameter value. |
#format= | Specifies the format code that is sent alongside with an encoded query parameter value. |
#name | Name of the coder or the corresponding data type. |
#oid | The type OID that is sent alongside with an encoded query parameter value. |
#oid= | Specifies the type OID that is sent alongside with an encoded query parameter value. |
Instance Method Summary
::PG::CopyCoder
- Inherited
::PG::Coder
- Inherited
#==, #dup, #inspect, #inspect_short, #marshal_dump, #marshal_load, | |
#to_h | Returns coder attributes as Hash. |
Constructor Details
This class inherits a constructor from PG::Coder