# row_binary_with_names

## Description

A binary column count and column-name header followed by positional binary rows. Input can bind header names to target columns.

Input and output. Select it with `FORMAT row_binary_with_names`. Names ignore ASCII case; use the snake_case name shown here.

A column count and name strings precede the ordinary row_binary payload. The default name matching binds fields without regard to ASCII case; its positional mode reads in target order.

Names alone do not describe value widths. The import must still have compatible target types. Use the names-and-types variant when type declarations should travel in the header too.

```text
SELECT expressions FORMAT row_binary_with_names;
INSERT INTO table [(columns)] [SETTINGS ...] FORMAT row_binary_with_names
<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.

```sh
./coordinator client --database data --query "SELECT CAST(7 AS Int64) AS id FORMAT row_binary_with_names" > sample.row_binary_with_names
./coordinator client --database data --query "CREATE TABLE format_import(id Int64)" > /dev/null
./coordinator client --database data --query "INSERT INTO format_import FORMAT row_binary_with_names" < sample.row_binary_with_names > /dev/null
./coordinator client --database data --query "SELECT id FROM format_import FORMAT csv"
```

```text
7
```

Create `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                                                                                                             |
| ------------------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------------------------------- |
| `row_binary_match_names`        | `Bool`   | `1`          | Match input header names ignoring ASCII case; when off read in target column order.                                 |
| `row_binary_max_string_bytes`   | `UInt64` | `1073741824` | Maximum bytes in an input variable-length string, including header names and type parameters; 0 disables the limit. |
| `row_binary_read_json_strings`  | `Bool`   | `0`          | Read JSON fields as length-prefixed JSON text; binary JSON paths are unsupported.                                   |
| `row_binary_write_json_strings` | `Bool`   | `0`          | Write JSON fields as length-prefixed JSON text; binary JSON paths are unsupported.                                  |
| `snappy_mode`                   | `String` | `basic`      | Read Snappy client files as basic (Hadoop blocks) or framed (standard streaming format).                            |
