Class: PG::BinaryDecoder::CopyRow
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
|
|
Instance Chain:
|
|
Inherits: |
PG::CopyDecoder
|
Defined in: | ext/pg_copy_coder.c |
Overview
This class decodes one row of arbitrary columns received 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#get_copy_data .
The columns are retrieved as Array of values. The single values are decoded as defined in the assigned #type_map
. If no type_map was assigned, all values are converted to strings by String
.
Example with default type map ( ::PG::TypeMapAllStrings
):
conn.exec("CREATE TABLE my_table AS VALUES('astring', 7, FALSE), ('string2', 42, TRUE) ")
deco = PG::BinaryDecoder::CopyRow.new
conn.copy_data "COPY my_table TO STDOUT WITH (FORMAT binary)", deco do
while row=conn.get_copy_data
p row
end
end
This prints all rows of my_table
in binary format:
["astring", "\x00\x00\x00\a", "\x00"]
["string2", "\x00\x00\x00*", "\x01"]
Example with column based type map:
tm = PG::TypeMapByColumn.new( [
PG::BinaryDecoder::String.new,
PG::BinaryDecoder::Integer.new,
PG::BinaryDecoder::Boolean.new] )
deco = PG::BinaryDecoder::CopyRow.new( type_map: tm )
conn.copy_data "COPY my_table TO STDOUT WITH (FORMAT binary)", deco do
while row=conn.get_copy_data
p row
end
end
This prints the rows with type casted columns:
["astring", 7, false]
["string2", 42, true]
Instead of manually assigning a type decoder for each column, ::PG::BasicTypeMapForResults
can be used to assign them based on the table OIDs.
See also ::PG::BinaryEncoder::CopyRow
for the encoding direction with Connection#put_copy_data . And see ::PG::TextDecoder::CopyRow
for a decoder 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