arrow_stream
Description
Arrow IPC stream with a schema, record batches and an end marker.
Input and output. Select it with FORMAT arrow_stream. Names ignore ASCII case; use the snake_case name shown here.
Use this layout with consumers expecting sequential Arrow IPC messages rather than a seekable IPC file. A stream begins with its schema, can contain several record batches and must end cleanly; trailing bytes after its end marker are rejected.
The value mappings are the same as arrow. Use explicit target declarations when importing and the native client exact-byte mode when exporting.
SELECT expressions FORMAT arrow_stream;
INSERT INTO table [(columns)] [SETTINGS ...] FORMAT arrow_stream
<data>Example usage
Use the native client's --query mode to preserve binary output bytes. The server must be running, the executable available as ./coordinator, and database data selected.
./coordinator client --database data --query "SELECT CAST(7 AS Int64) AS id FORMAT arrow_stream" > sample.arrow_stream
./coordinator client --database data --query "CREATE TABLE format_import(id Int64)" > /dev/null
./coordinator client --database data --query "INSERT INTO format_import FORMAT arrow_stream" < sample.arrow_stream > /dev/null
./coordinator client --database data --query "SELECT id FROM format_import FORMAT csv"7Create format_import in a fresh database before running this example.
Format settings
Use a statement SETTINGS clause; these options are not persisted by SET.
| Setting | Type | Default | Meaning |
|---|---|---|---|
arrow_compression |
String |
lz4_frame |
Compress record batch buffers with lz4_frame or zstd; none writes uncompressed buffers. |
arrow_date_as_number |
Bool |
0 |
Write Date as UInt16 days since the epoch instead of Date32; Date32 always remains Date32. |
arrow_dictionary |
Bool |
0 |
Write LowCardinality as dictionary indices and values instead of expanding its scalars. |
arrow_dictionary_64bit_indices |
Bool |
0 |
Use 64-bit dictionary indices instead of the smallest width that fits the dictionary. |
arrow_dictionary_signed_indices |
Bool |
1 |
Use signed dictionary indices; when off, use unsigned indices. |
arrow_fixed_strings |
Bool |
1 |
Write FixedString with a fixed byte width instead of variable-length Binary. |
arrow_ignore_case |
Bool |
0 |
Ignore ASCII case when matching input field names to target columns. |
arrow_missing_as_default |
Bool |
1 |
Give target columns absent from the input schema their DEFAULT; when off, reject missing columns. |
arrow_strings_as_text |
Bool |
1 |
Write text strings as Utf8 instead of Binary; byte strings keep their exact bytes. |
ignore_unknown_fields |
Bool |
0 |
Skip input keys and header names that match no target column instead of failing. |
snappy_mode |
String |
basic |
Read Snappy client files as basic (Hadoop blocks) or framed (standard streaming format). |