> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# output_format_* format settings

> ClickHouse format settings in the output_format_* generated group.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Type</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Default</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Changeable without restart
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

These settings are autogenerated from [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/FormatFactorySettings.h).

<h2 id="output_format_always_write_decimal_point_in_float_and_decimal">
  output\_format\_always\_write\_decimal\_point\_in\_float\_and\_decimal
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "New setting to always print a decimal point for floating-point and Decimal numbers in text formats, even when the value is a whole number."}]}]} />

Always print a decimal point for floating-point and Decimal numbers in text formats, even when the value is a whole number. For example, output `1.` instead of `1`.

Disabled by default.

<h2 id="output_format_arrow_compression_method">
  output\_format\_arrow\_compression\_method
</h2>

<SettingsInfoBlock type="ArrowCompression" default_value="lz4_frame" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.3"},{"label": "lz4_frame"},{"label": "Use lz4 compression in Arrow output format by default"}]}]} />

Compression method for Arrow output format. Supported codecs: lz4\_frame, zstd, none (uncompressed)

<h2 id="output_format_arrow_date_as_uint16">
  output\_format\_arrow\_date\_as\_uint16
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "0"},{"label": "Write Date as Arrow DATE32 instead of plain UInt16 by default."}]}]} />

Write Date values as plain 16-bit numbers (read back as UInt16), instead of converting to a 32-bit Arrow DATE32 type (read back as Date32).

<h2 id="output_format_arrow_fixed_string_as_fixed_byte_array">
  output\_format\_arrow\_fixed\_string\_as\_fixed\_byte\_array
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "1"},{"label": "Use Arrow FIXED_SIZE_BINARY type for FixedString by default"}]}]} />

Use Arrow FIXED\_SIZE\_BINARY type instead of Binary for FixedString columns.

<h2 id="output_format_arrow_low_cardinality_as_dictionary">
  output\_format\_arrow\_low\_cardinality\_as\_dictionary
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Enable output LowCardinality type as Dictionary Arrow type

<h2 id="output_format_arrow_string_as_string">
  output\_format\_arrow\_string\_as\_string
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "ClickHouse allows arbitrary binary data in the String data type, which is typically UTF-8. Parquet\/ORC\/Arrow Strings only support UTF-8. That's why you can choose which Arrow's data type to use for the ClickHouse String data type - String or Binary. While Binary would be more correct and compatible, using String by default will correspond to user expectations in most cases."}]}]} />

Use Arrow String type instead of Binary for String columns

<h2 id="output_format_arrow_unsupported_types_as_binary">
  output\_format\_arrow\_unsupported\_types\_as\_binary
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "New setting to convert unsupported CH types to arrow binary instead of UNKNOWN_TYPE exception."}]}]} />

Output types having no conversion as raw binary data. If false - such types would raise UNKNOWN\_TYPE exception.

<h2 id="output_format_arrow_use_64_bit_indexes_for_dictionary">
  output\_format\_arrow\_use\_64\_bit\_indexes\_for\_dictionary
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "Allow to use 64 bit indexes type in Arrow dictionaries"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "0"},{"label": "Allow to use 64 bit indexes type in Arrow dictionaries"}]}]} />

Always use 64 bit integers for dictionary indexes in Arrow format

<h2 id="output_format_arrow_use_native_writer">
  output\_format\_arrow\_use\_native\_writer
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "1"},{"label": "New setting to use the native ClickHouse writer for the Arrow and ArrowStream formats instead of the Apache Arrow library."}]}]} />

Use the native ClickHouse writer for the Arrow and ArrowStream formats instead of the one based on the Apache Arrow library.

<h2 id="output_format_arrow_use_signed_indexes_for_dictionary">
  output\_format\_arrow\_use\_signed\_indexes\_for\_dictionary
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "1"},{"label": "Use signed indexes type for Arrow dictionaries by default as it's recommended"}]}]} />

Use signed integers for dictionary indexes in Arrow format

<h2 id="output_format_avro_codec">
  output\_format\_avro\_codec
</h2>

Compression codec used for output. Possible values: 'null', 'deflate', 'snappy', 'zstd'.

<h2 id="output_format_avro_confluent_subject">
  output\_format\_avro\_confluent\_subject
</h2>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": ""},{"label": "New setting to specify the subject name for schema registration in Confluent Schema Registry when writing AvroConfluent output."}]}]} />

For AvroConfluent output format: the subject name under which the schema is registered in the Confluent Schema Registry. Required when writing AvroConfluent output.

<h2 id="output_format_avro_rows_in_file">
  output\_format\_avro\_rows\_in\_file
</h2>

<SettingsInfoBlock type="UInt64" default_value="1" />

Max rows in a file (if permitted by storage)

<h2 id="output_format_avro_string_column_pattern">
  output\_format\_avro\_string\_column\_pattern
</h2>

For Avro format: regexp of String columns to select as AVRO string.

<h2 id="output_format_avro_sync_interval">
  output\_format\_avro\_sync\_interval
</h2>

<SettingsInfoBlock type="UInt64" default_value="16384" />

Sync interval in bytes.

<h2 id="output_format_binary_encode_types_in_binary_format">
  output\_format\_binary\_encode\_types\_in\_binary\_format
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Added new setting to allow to write type names in binary format in RowBinaryWithNamesAndTypes output format"}]}]} />

Write data types in binary format instead of type names in RowBinaryWithNamesAndTypes output format

<h2 id="output_format_binary_write_json_as_string">
  output\_format\_binary\_write\_json\_as\_string
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Add new setting to write values of JSON type as JSON string in RowBinary output format"}]}]} />

Write values of [JSON](/docs/reference/data-types/newjson) data type as JSON [String](/docs/reference/data-types/string) values in RowBinary output format.

<h2 id="output_format_bson_string_as_string">
  output\_format\_bson\_string\_as\_string
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Use BSON String type instead of Binary for String columns.

<h2 id="output_format_compression_level">
  output\_format\_compression\_level
</h2>

<SettingsInfoBlock type="UInt64" default_value="3" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "3"},{"label": "Allow to change compression level in the query output"}]}]} />

Default compression level if query output is compressed. The setting is applied when `SELECT` query has `INTO OUTFILE` or when writing to table functions `file`, `url`, `hdfs`, `s3`, or `azureBlobStorage`.

Possible values: from `1` to `22`

<h2 id="output_format_compression_zstd_window_log">
  output\_format\_compression\_zstd\_window\_log
</h2>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "0"},{"label": "Allow to change zstd window log in the query output when zstd compression is used"}]}]} />

Can be used when the output compression method is `zstd`. If greater than `0`, this setting explicitly sets compression window size (power of `2`) and enables a long-range mode for zstd compression. This can help to achieve a better compression ratio.

Possible values: non-negative numbers. Note that if the value is too small or too big, `zstdlib` will throw an exception. Typical values are from `20` (window size = `1MB`) to `30` (window size = `1GB`).

<h2 id="output_format_csv_crlf_end_of_line">
  output\_format\_csv\_crlf\_end\_of\_line
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

If it is set true, end of line in CSV format will be \r\n instead of \n.

<h2 id="output_format_csv_header_serialize_tuple_into_separate_columns">
  output\_format\_csv\_header\_serialize\_tuple\_into\_separate\_columns
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "1"},{"label": "New setting. When output_format_csv_serialize_tuple_into_separate_columns is enabled, the CSVWithNames\/CSVWithNamesAndTypes header now flattens Tuple columns into their leaf fields so the header width matches the data. Set to false to restore the previous single-name header."}]}]} />

When [output\_format\_csv\_serialize\_tuple\_into\_separate\_columns](/docs/reference/settings/formats/output-format#output_format_csv_serialize_tuple_into_separate_columns) is enabled, the header rows of `CSVWithNames` and `CSVWithNamesAndTypes` flatten each Tuple column into its leaf fields (dotted names like `t.a`, `t.b`, and the leaf type names), so the header has the same number of columns as the data. For `CustomSeparated*` this flattening applies only when `format_custom_escaping_rule = 'CSV'` and `format_custom_field_delimiter` is a single character equal to `format_csv_delimiter`; otherwise (for example the default tab delimiter or `format_custom_field_delimiter = '|'`) the header stays unflattened so it still matches the data. Set it to `0` to keep the previous behavior where the header keeps the single top-level Tuple name and type.

Note: a flattened header is not read back into a Tuple by name when `input_format_with_names_use_header = 1`. To read such data back into a Tuple, either set this setting to `0` on output, or read with `input_format_with_names_use_header = 0` (and, for the `*WithNamesAndTypes` formats `CSVWithNamesAndTypes` and `CustomSeparatedWithNamesAndTypes`, also `input_format_with_types_use_header = 0`, since the flattened types row is otherwise validated against the single top-level Tuple input field and rejected).

<h2 id="output_format_csv_serialize_tuple_into_separate_columns">
  output\_format\_csv\_serialize\_tuple\_into\_separate\_columns
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "A new way of how interpret tuples in CSV format was added."}]}, {"id": "row-2","items": [{"label": "24.3"},{"label": "1"},{"label": "A new way of how interpret tuples in CSV format was added."}]}]} />

If it set to true, then Tuples in CSV format are serialized as separate columns (that is, their nesting in the tuple is lost)

<h2 id="output_format_decimal_trailing_zeros">
  output\_format\_decimal\_trailing\_zeros
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.9"},{"label": "0"},{"label": "Do not output trailing zeros in text representation of Decimal types by default for better looking output"}]}]} />

Output trailing zeros when printing Decimal values. E.g. 1.230000 instead of 1.23.

Disabled by default.

<h2 id="output_format_float_precision">
  output\_format\_float\_precision
</h2>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "A new setting to control decimal digits in float output"}]}]} />

When non-zero, format floating-point output (`Float32`, `Float64`, `BFloat16`) with at most this many digits after the decimal point (trailing zeros are removed).
When 0 (the default), use the shortest round-trip representation.

Values too large for fixed notation, and values whose magnitude is so small that rounding to the requested precision would lose all significant digits (the mantissa would become `±0`), are emitted in scientific notation instead. In these fallback cases the mantissa may carry more than the requested number of fractional digits.

Valid range: 0 to 100.

<h2 id="output_format_image_height">
  output\_format\_image\_height
</h2>

<SettingsInfoBlock type="UInt64" default_value="1024" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1024"},{"label": "New setting controlling the height of the output image for image output formats such as PNG."}]}]} />

The height of the output image in pixels for image output formats such as `PNG`.

Default value: 1024.

<h2 id="output_format_image_terminal_mode">
  output\_format\_image\_terminal\_mode
</h2>

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": ""},{"label": "New setting controlling whether image output formats such as PNG are rendered directly to the terminal using an inline image protocol."}]}]} />

For image output formats such as `PNG`, output the image directly to the terminal using an inline image protocol instead of writing the raw image bytes.

Possible values:

* \`\` (empty) — write the raw image bytes (the default).
* `iterm` — use the iTerm2 inline image protocol.
* `kitty` — use the Kitty graphics protocol.
* `sixel` — use the Sixel protocol.
* `auto` — if the output is a terminal, detect its capabilities and use `iterm`, `kitty`, or `sixel` (in this order); otherwise write the raw image bytes.

Default value: \`\` (empty).

<h2 id="output_format_image_width">
  output\_format\_image\_width
</h2>

<SettingsInfoBlock type="UInt64" default_value="1024" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1024"},{"label": "New setting controlling the width of the output image for image output formats such as PNG."}]}]} />

The width of the output image in pixels for image output formats such as `PNG`.

Default value: 1024.

<h2 id="output_format_json_array_of_rows">
  output\_format\_json\_array\_of\_rows
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Enables the ability to output all rows as a JSON array in the [JSONEachRow](/docs/reference/formats/JSON/JSONEachRow) format.

Possible values:

* 1 — ClickHouse outputs all rows as an array, each row in the `JSONEachRow` format.
* 0 — ClickHouse outputs each row separately in the `JSONEachRow` format.

**Example of a query with the enabled setting**

Query:

```sql theme={null}
SET output_format_json_array_of_rows = 1;
SELECT number FROM numbers(3) FORMAT JSONEachRow;
```

Result:

```text theme={null}
[
{"number":"0"},
{"number":"1"},
{"number":"2"}
]
```

**Example of a query with the disabled setting**

Query:

```sql theme={null}
SET output_format_json_array_of_rows = 0;
SELECT number FROM numbers(3) FORMAT JSONEachRow;
```

Result:

```text theme={null}
{"number":"0"}
{"number":"1"}
{"number":"2"}
```

<h2 id="output_format_json_escape_forward_slashes">
  output\_format\_json\_escape\_forward\_slashes
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

Controls escaping forward slashes for string outputs in JSON output format. This is intended for compatibility with JavaScript. Don't confuse with backslashes that are always escaped.

Enabled by default.

<h2 id="output_format_json_map_as_array_of_tuples">
  output\_format\_json\_map\_as\_array\_of\_tuples
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "0"},{"label": "New setting"}]}]} />

Serialize maps columns as JSON arrays of tuples.

Disabled by default.

<h2 id="output_format_json_named_tuples_as_objects">
  output\_format\_json\_named\_tuples\_as\_objects
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.6"},{"label": "1"},{"label": "Allow to serialize named tuples as JSON objects in JSON formats by default"}]}]} />

Serialize named tuple columns as JSON objects.

Enabled by default.

<h2 id="output_format_json_pretty_print">
  output\_format\_json\_pretty\_print
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Print values in a pretty format in JSON output format by default"}]}]} />

This setting determines how nested structures such as Tuples, Maps, and Arrays are displayed within the `data` array when using the JSON output format.

For example, instead of output:

```json theme={null}
"data":
[
  {
    "tuple": {"a":1,"b":2,"c":3},
    "array": [1,2,3],
    "map": {"a":1,"b":2,"c":3}
  }
],
```

The output will be formatted as:

```json theme={null}
"data":
[
    {
        "tuple": {
            "a": 1,
            "b": 2,
            "c": 3
        },
        "array": [
            1,
            2,
            3
        ],
        "map": {
            "a": 1,
            "b": 2,
            "c": 3
        }
    }
],
```

Enabled by default.

<h2 id="output_format_json_quote_64bit_floats">
  output\_format\_json\_quote\_64bit\_floats
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Controls quoting of 64-bit [floats](/docs/reference/data-types/float) when they are output in JSON\* formats.

Disabled by default.

<h2 id="output_format_json_quote_64bit_integers">
  output\_format\_json\_quote\_64bit\_integers
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Disable quoting of the 64 bit integers in JSON by default"}]}]} />

Controls quoting of 64-bit or bigger [integers](/docs/reference/data-types/int-uint) (like `UInt64` or `Int128`) when they are output in a [JSON](/docs/reference/formats/JSON/JSON) format.
Such integers are enclosed in quotes by default. This behavior is compatible with most JavaScript implementations.

Possible values:

* 0 — Integers are output without quotes.
* 1 — Integers are enclosed in quotes.

<h2 id="output_format_json_quote_decimals">
  output\_format\_json\_quote\_decimals
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Controls quoting of decimals in JSON output formats.

Disabled by default.

<h2 id="output_format_json_quote_denormals">
  output\_format\_json\_quote\_denormals
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Enables `+nan`, `-nan`, `+inf`, `-inf` outputs in [JSON](/docs/reference/formats/JSON/JSON) output format.

Possible values:

* 0 — Disabled.
* 1 — Enabled.

**Example**

Consider the following table `account_orders`:

```text theme={null}
┌─id─┬─name───┬─duration─┬─period─┬─area─┐
│  1 │ Andrew │       20 │      0 │  400 │
│  2 │ John   │       40 │      0 │    0 │
│  3 │ Bob    │       15 │      0 │ -100 │
└────┴────────┴──────────┴────────┴──────┘
```

When `output_format_json_quote_denormals = 0`, the query returns `null` values in output:

```sql theme={null}
SELECT area/period FROM account_orders FORMAT JSON;
```

```json theme={null}
{
        "meta":
        [
                {
                        "name": "divide(area, period)",
                        "type": "Float64"
                }
        ],

        "data":
        [
                {
                        "divide(area, period)": null
                },
                {
                        "divide(area, period)": null
                },
                {
                        "divide(area, period)": null
                }
        ],

        "rows": 3,

        "statistics":
        {
                "elapsed": 0.003648093,
                "rows_read": 3,
                "bytes_read": 24
        }
}
```

When `output_format_json_quote_denormals = 1`, the query returns:

```json theme={null}
{
        "meta":
        [
                {
                        "name": "divide(area, period)",
                        "type": "Float64"
                }
        ],

        "data":
        [
                {
                        "divide(area, period)": "inf"
                },
                {
                        "divide(area, period)": "-nan"
                },
                {
                        "divide(area, period)": "-inf"
                }
        ],

        "rows": 3,

        "statistics":
        {
                "elapsed": 0.000070241,
                "rows_read": 3,
                "bytes_read": 24
        }
}
```

<h2 id="output_format_json_skip_null_value_in_named_tuples">
  output\_format\_json\_skip\_null\_value\_in\_named\_tuples
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Skip key value pairs with null value when serialize named tuple columns as JSON objects. It is only valid when output\_format\_json\_named\_tuples\_as\_objects is true.

<h2 id="output_format_json_validate_utf8">
  output\_format\_json\_validate\_utf8
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Controls validation of UTF-8 sequences in JSON output formats, doesn't impact formats JSON/JSONCompact/JSONColumnsWithMetadata, they always validate UTF-8.

Disabled by default.

<h2 id="output_format_markdown_escape_special_characters">
  output\_format\_markdown\_escape\_special\_characters
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

When enabled, escape special characters in Markdown.

[Common Mark](https://spec.commonmark.org/0.30/#example-12) defines the following special characters that can be escaped by :

```
! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
```

Possible values:

* 0 — Disable.
* 1 — Enable.

<h2 id="output_format_msgpack_uuid_representation">
  output\_format\_msgpack\_uuid\_representation
</h2>

<SettingsInfoBlock type="MsgPackUUIDRepresentation" default_value="ext" />

The way how to output UUID in MsgPack format.

<h2 id="output_format_native_encode_types_in_binary_format">
  output\_format\_native\_encode\_types\_in\_binary\_format
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Added new setting to allow to write type names in binary format in Native output format"}]}]} />

Write data types in binary format instead of type names in Native output format

<h2 id="output_format_native_use_flattened_dynamic_and_json_serialization">
  output\_format\_native\_use\_flattened\_dynamic\_and\_json\_serialization
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Add flattened Dynamic\/JSON serializations to Native format"}]}]} />

Write data of [JSON](/docs/reference/data-types/newjson) and [Dynamic](/docs/reference/data-types/dynamic) columns in a flattened format (all types/paths as separate subcolumns).

<h2 id="output_format_native_write_json_as_string">
  output\_format\_native\_write\_json\_as\_string
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "0"},{"label": "Add new setting to allow write JSON column as single String column in Native format"}]}]} />

Write data of [JSON](/docs/reference/data-types/newjson) column as [String](/docs/reference/data-types/string) column containing JSON strings instead of default native JSON serialization.

<h2 id="output_format_orc_compression_block_size">
  output\_format\_orc\_compression\_block\_size
</h2>

<SettingsInfoBlock type="UInt64" default_value="262144" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "262144"},{"label": "New setting"}]}]} />

The size of the compression block in bytes for ORC output format.

<h2 id="output_format_orc_compression_method">
  output\_format\_orc\_compression\_method
</h2>

<SettingsInfoBlock type="ORCCompression" default_value="zstd" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "zstd"},{"label": "Parquet\/ORC\/Arrow support many compression methods, including lz4 and zstd. ClickHouse supports each and every compression method. Some inferior tools, such as 'duckdb', lack support for the faster `lz4` compression method, that's why we set zstd by default."}]}, {"id": "row-2","items": [{"label": "23.3"},{"label": "lz4_frame"},{"label": "Use lz4 compression in ORC output format by default"}]}]} />

Compression method for ORC output format. Supported codecs: lz4, snappy, zlib, zstd, none (uncompressed)

<h2 id="output_format_orc_dictionary_key_size_threshold">
  output\_format\_orc\_dictionary\_key\_size\_threshold
</h2>

<SettingsInfoBlock type="Double" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.9"},{"label": "0"},{"label": "For a string column in ORC output format, if the number of distinct values is greater than this fraction of the total number of non-null rows, turn off dictionary encoding. Otherwise dictionary encoding is enabled"}]}]} />

For a string column in ORC output format, if the number of distinct values is greater than this fraction of the total number of non-null rows, turn off dictionary encoding. Otherwise dictionary encoding is enabled

<h2 id="output_format_orc_row_index_stride">
  output\_format\_orc\_row\_index\_stride
</h2>

<SettingsInfoBlock type="UInt64" default_value="10000" />

Target row index stride in ORC output format

<h2 id="output_format_orc_string_as_string">
  output\_format\_orc\_string\_as\_string
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "ClickHouse allows arbitrary binary data in the String data type, which is typically UTF-8. Parquet\/ORC\/Arrow Strings only support UTF-8. That's why you can choose which Arrow's data type to use for the ClickHouse String data type - String or Binary. While Binary would be more correct and compatible, using String by default will correspond to user expectations in most cases."}]}]} />

Use ORC String type instead of Binary for String columns

<h2 id="output_format_orc_writer_time_zone_name">
  output\_format\_orc\_writer\_time\_zone\_name
</h2>

<SettingsInfoBlock type="String" default_value="GMT" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "GMT"},{"label": "The time zone name for ORC writer, the default ORC writer's time zone is GMT."}]}]} />

The time zone name for ORC writer, the default ORC writer's time zone is GMT.

<h2 id="output_format_parallel_formatting">
  output\_format\_parallel\_formatting
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

Enables or disables parallel formatting of data formats. Supported only for [TSV](/docs/reference/formats/TabSeparated/TabSeparated), [TSKV](/docs/reference/formats/TabSeparated/TSKV), [CSV](/docs/reference/formats/CSV/CSV) and [JSONEachRow](/docs/reference/formats/JSON/JSONEachRow) formats.

Possible values:

* 1 — Enabled.
* 0 — Disabled.

<h2 id="output_format_parquet_batch_size">
  output\_format\_parquet\_batch\_size
</h2>

<SettingsInfoBlock type="NonZeroUInt64" default_value="1024" />

Check page size every this many rows. Consider decreasing if you have columns with average values size above a few KBs.

<h2 id="output_format_parquet_bloom_filter_bits_per_value">
  output\_format\_parquet\_bloom\_filter\_bits\_per\_value
</h2>

<SettingsInfoBlock type="Double" default_value="10.5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "10.5"},{"label": "New setting."}]}]} />

Approximate number of bits to use for each distinct value in parquet bloom filters. Estimated false positive rates:

* 6   bits - 10%
* 10.5 bits -  1%
* 16.9 bits -  0.1%
* 26.4 bits -  0.01%
* 41   bits -  0.001%

<h2 id="output_format_parquet_bloom_filter_flush_threshold_bytes">
  output\_format\_parquet\_bloom\_filter\_flush\_threshold\_bytes
</h2>

<SettingsInfoBlock type="UInt64" default_value="134217728" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "134217728"},{"label": "New setting."}]}]} />

Where in the parquet file to place the bloom filters. Bloom filters will be written in groups of approximately this size. In particular:

* if 0, each row group's bloom filters are written immediately after the row group,
* if greater than the total size of all bloom filters, bloom filters for all row groups will be accumulated in memory, then written together near the end of the file,
* otherwise, bloom filters will be accumulated in memory and written out whenever their total size goes above this value.

<h2 id="output_format_parquet_compression_method">
  output\_format\_parquet\_compression\_method
</h2>

<SettingsInfoBlock type="ParquetCompression" default_value="zstd" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "zstd"},{"label": "Parquet\/ORC\/Arrow support many compression methods, including lz4 and zstd. ClickHouse supports each and every compression method. Some inferior tools, such as 'duckdb', lack support for the faster `lz4` compression method, that's why we set zstd by default."}]}, {"id": "row-2","items": [{"label": "23.3"},{"label": "lz4"},{"label": "Use lz4 compression in Parquet output format by default"}]}]} />

Compression method for Parquet output format. Supported codecs: snappy, lz4, brotli, zstd, gzip, none (uncompressed)

<h2 id="output_format_parquet_data_page_size">
  output\_format\_parquet\_data\_page\_size
</h2>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

Target page size in bytes, before compression.

<h2 id="output_format_parquet_date_as_uint16">
  output\_format\_parquet\_date\_as\_uint16
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Added a compatibility setting for a minor compatibility-breaking change introduced back in 24.12."}]}, {"id": "row-2","items": [{"label": "24.12"},{"label": "0"},{"label": "Write Date as Date32 instead of plain UInt16 (these are the two Parquet types closest to Date)."}]}]} />

Write Date values as plain 16-bit numbers (read back as UInt16), instead of converting to a 32-bit parquet DATE type (read back as Date32).

<h2 id="output_format_parquet_datetime_as_uint32">
  output\_format\_parquet\_datetime\_as\_uint32
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "0"},{"label": "Write DateTime as DateTime64(3) instead of UInt32 (these are the two Parquet types closest to DateTime)."}]}]} />

Write DateTime values as raw unix timestamp (read back as UInt32), instead of converting to milliseconds (read back as DateTime64(3)).

<h2 id="output_format_parquet_enum_as_byte_array">
  output\_format\_parquet\_enum\_as\_byte\_array
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1"},{"label": "Enable writing Enum as byte array in Parquet by default"}]}, {"id": "row-2","items": [{"label": "25.7"},{"label": "0"},{"label": "Write enum using parquet physical type: BYTE_ARRAY and logical type: ENUM"}]}]} />

Write enum using parquet physical type: BYTE\_ARRAY and logical type: ENUM

<h2 id="output_format_parquet_fixed_string_as_fixed_byte_array">
  output\_format\_parquet\_fixed\_string\_as\_fixed\_byte\_array
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "1"},{"label": "Use Parquet FIXED_LENGTH_BYTE_ARRAY type for FixedString by default"}]}]} />

Use Parquet FIXED\_LEN\_BYTE\_ARRAY type instead of Binary for FixedString columns.

<h2 id="output_format_parquet_geometadata">
  output\_format\_parquet\_geometadata
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "1"},{"label": "A new setting to allow to write information about geo columns in parquet metadata and encode columns in WKB format."}]}]} />

Allow to write information about geo columns in parquet metadata and encode columns in WKB format.

<h2 id="output_format_parquet_max_dictionary_size">
  output\_format\_parquet\_max\_dictionary\_size
</h2>

<SettingsInfoBlock type="UInt64" default_value="1048576" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "1048576"},{"label": "New setting"}]}]} />

If dictionary size grows bigger than this many bytes, switch to encoding without dictionary. Set to 0 to disable dictionary encoding.

<h2 id="output_format_parquet_parallel_encoding">
  output\_format\_parquet\_parallel\_encoding
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

Do Parquet encoding in multiple threads.

<h2 id="output_format_parquet_row_group_size">
  output\_format\_parquet\_row\_group\_size
</h2>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

Target row group size in rows.

<h2 id="output_format_parquet_row_group_size_bytes">
  output\_format\_parquet\_row\_group\_size\_bytes
</h2>

<SettingsInfoBlock type="UInt64" default_value="536870912" />

Target row group size in bytes, before compression.

<h2 id="output_format_parquet_string_as_string">
  output\_format\_parquet\_string\_as\_string
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "ClickHouse allows arbitrary binary data in the String data type, which is typically UTF-8. Parquet\/ORC\/Arrow Strings only support UTF-8. That's why you can choose which Arrow's data type to use for the ClickHouse String data type - String or Binary. While Binary would be more correct and compatible, using String by default will correspond to user expectations in most cases."}]}]} />

Use Parquet String type instead of Binary for String columns.

<h2 id="output_format_parquet_write_bloom_filter">
  output\_format\_parquet\_write\_bloom\_filter
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1"},{"label": "Added support for writing Parquet bloom filters."}]}]} />

Write bloom filters in parquet files.

<h2 id="output_format_parquet_write_checksums">
  output\_format\_parquet\_write\_checksums
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "New setting."}]}]} />

Put crc32 checksums in parquet page headers.

<h2 id="output_format_parquet_write_page_index">
  output\_format\_parquet\_write\_page\_index
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "1"},{"label": "Add a possibility to write page index into parquet files."}]}]} />

Write column index and offset index (i.e. statistics about each data page, which may be used for filter pushdown on read) into parquet files.

<h2 id="output_format_pretty_color">
  output\_format\_pretty\_color
</h2>

<SettingsInfoBlock type="UInt64Auto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.1"},{"label": "auto"},{"label": "Setting is changed to allow also for auto value, disabling ANSI escapes if output is not a tty"}]}]} />

Use ANSI escape sequences in Pretty formats. 0 - disabled, 1 - enabled, 'auto' - enabled if a terminal.

<h2 id="output_format_pretty_display_footer_column_names">
  output\_format\_pretty\_display\_footer\_column\_names
</h2>

<SettingsInfoBlock type="UInt64" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Add a setting to display column names in the footer if there are many rows. Threshold value is controlled by output_format_pretty_display_footer_column_names_min_rows."}]}]} />

Display column names in the footer if there are many table rows.

Possible values:

* 0 — No column names are displayed in the footer.
* 1 — Column names are displayed in the footer if row count is greater than or equal to the threshold value set by [output\_format\_pretty\_display\_footer\_column\_names\_min\_rows](/docs/reference/settings/formats/output-format#output_format_pretty_display_footer_column_names_min_rows) (50 by default).

**Example**

Query:

```sql theme={null}
SELECT *, toTypeName(*) FROM (SELECT * FROM system.numbers LIMIT 1000);
```

Result:

```response theme={null}
      ┌─number─┬─toTypeName(number)─┐
   1. │      0 │ UInt64             │
   2. │      1 │ UInt64             │
   3. │      2 │ UInt64             │
   ...
 999. │    998 │ UInt64             │
1000. │    999 │ UInt64             │
      └─number─┴─toTypeName(number)─┘
```

<h2 id="output_format_pretty_display_footer_column_names_min_rows">
  output\_format\_pretty\_display\_footer\_column\_names\_min\_rows
</h2>

<SettingsInfoBlock type="UInt64" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "50"},{"label": "Add a setting to control the threshold value for setting output_format_pretty_display_footer_column_names_min_rows. Default 50."}]}]} />

Sets the minimum number of rows for which a footer with column names will be displayed if setting [output\_format\_pretty\_display\_footer\_column\_names](/docs/reference/settings/formats/output-format#output_format_pretty_display_footer_column_names) is enabled.

<h2 id="output_format_pretty_fallback_to_vertical">
  output\_format\_pretty\_fallback\_to\_vertical
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "A new setting"}]}]} />

If enabled, and the table is wide but short, the Pretty format will output it as the Vertical format does.
See `output_format_pretty_fallback_to_vertical_max_rows_per_chunk` and `output_format_pretty_fallback_to_vertical_min_table_width` for detailed tuning of this behavior.

<h2 id="output_format_pretty_fallback_to_vertical_max_rows_per_chunk">
  output\_format\_pretty\_fallback\_to\_vertical\_max\_rows\_per\_chunk
</h2>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "100"},{"label": "A new setting"}]}]} />

The fallback to Vertical format (see `output_format_pretty_fallback_to_vertical`) will be activated only if the number of records in a chunk is not more than the specified value.

<h2 id="output_format_pretty_fallback_to_vertical_min_columns">
  output\_format\_pretty\_fallback\_to\_vertical\_min\_columns
</h2>

<SettingsInfoBlock type="UInt64" default_value="5" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "5"},{"label": "A new setting"}]}]} />

The fallback to Vertical format (see `output_format_pretty_fallback_to_vertical`) will be activated only if the number of columns is greater than the specified value.

<h2 id="output_format_pretty_fallback_to_vertical_min_table_width">
  output\_format\_pretty\_fallback\_to\_vertical\_min\_table\_width
</h2>

<SettingsInfoBlock type="UInt64" default_value="250" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "250"},{"label": "A new setting"}]}]} />

The fallback to Vertical format (see `output_format_pretty_fallback_to_vertical`) will be activated only if the sum of lengths of columns in a table is at least the specified value, or if at least one value contains a newline character.

<h2 id="output_format_pretty_glue_chunks">
  output\_format\_pretty\_glue\_chunks
</h2>

<SettingsInfoBlock type="UInt64Auto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "auto"},{"label": "A new setting to make Pretty formats prettier."}]}]} />

If the data rendered in Pretty formats arrived in multiple chunks, even after a delay, but the next chunk has the same column widths as the previous, use ANSI escape sequences to move back to the previous line and overwrite the footer of the previous chunk to continue it with the data of the new chunk. This makes the result more visually pleasant.

0 - disabled, 1 - enabled, 'auto' - enabled if a terminal.

<h2 id="output_format_pretty_grid_charset">
  output\_format\_pretty\_grid\_charset
</h2>

<SettingsInfoBlock type="String" default_value="UTF-8" />

Charset for printing grid borders. Available charsets: ASCII, UTF-8 (default).

In interactive mode, `clickhouse-client` automatically switches to `ASCII` when the terminal does not support UTF-8 (as determined by the `LC_ALL`, `LC_CTYPE` and `LANG` environment variables), unless this setting is specified explicitly.

<h2 id="output_format_pretty_highlight_digit_groups">
  output\_format\_pretty\_highlight\_digit\_groups
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "If enabled and if output is a terminal, highlight every digit corresponding to the number of thousands, millions, etc. with underline."}]}]} />

If enabled and if output is a terminal, highlight every digit corresponding to the number of thousands, millions, etc. with underline.

<h2 id="output_format_pretty_highlight_trailing_spaces">
  output\_format\_pretty\_highlight\_trailing\_spaces
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "A new setting."}]}]} />

If enabled and if output is a terminal, highlight trailing spaces with a gray color and underline.

<h2 id="output_format_pretty_max_column_name_width_cut_to">
  output\_format\_pretty\_max\_column\_name\_width\_cut\_to
</h2>

<SettingsInfoBlock type="UInt64" default_value="24" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "24"},{"label": "A new setting"}]}]} />

If the column name is too long, cut it to this length.
The column will be cut if it is longer than `output_format_pretty_max_column_name_width_cut_to` plus `output_format_pretty_max_column_name_width_min_chars_to_cut`.

<h2 id="output_format_pretty_max_column_name_width_min_chars_to_cut">
  output\_format\_pretty\_max\_column\_name\_width\_min\_chars\_to\_cut
</h2>

<SettingsInfoBlock type="UInt64" default_value="4" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "4"},{"label": "A new setting"}]}]} />

Minimum characters to cut if the column name is too long.
The column will be cut if it is longer than `output_format_pretty_max_column_name_width_cut_to` plus `output_format_pretty_max_column_name_width_min_chars_to_cut`.

<h2 id="output_format_pretty_max_column_pad_width">
  output\_format\_pretty\_max\_column\_pad\_width
</h2>

<SettingsInfoBlock type="UInt64" default_value="250" />

Maximum width to pad all values in a column in Pretty formats.

<h2 id="output_format_pretty_max_rows">
  output\_format\_pretty\_max\_rows
</h2>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "1000"},{"label": "It is better for usability - less amount to scroll."}]}]} />

Rows limit for Pretty formats.

<h2 id="output_format_pretty_max_value_width">
  output\_format\_pretty\_max\_value\_width
</h2>

<SettingsInfoBlock type="UInt64" default_value="10000" />

Maximum width of value to display in Pretty formats. If greater - it will be cut.
The value 0 means - never cut.

<h2 id="output_format_pretty_max_value_width_apply_for_single_value">
  output\_format\_pretty\_max\_value\_width\_apply\_for\_single\_value
</h2>

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "0"},{"label": "Single values in Pretty formats won't be cut."}]}]} />

Only cut values (see the `output_format_pretty_max_value_width` setting) when it is not a single value in a block. Otherwise output it entirely, which is useful for the `SHOW CREATE TABLE` query.

<h2 id="output_format_pretty_multiline_fields">
  output\_format\_pretty\_multiline\_fields
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "A new setting"}]}]} />

If enabled, Pretty formats will render multi-line fields inside table cell, so the table's outline will be preserved.
If not, they will be rendered as is, potentially deforming the table (one upside of keeping it off is that copy-pasting multi-line values will be easier).

<h2 id="output_format_pretty_named_tuples_as_json">
  output\_format\_pretty\_named\_tuples\_as\_json
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "New setting to control whether named tuples in Pretty format are output as JSON objects"}]}]} />

Controls whether named tuples in Pretty format are output as pretty-printed JSON objects.

<h2 id="output_format_pretty_row_numbers">
  output\_format\_pretty\_row\_numbers
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.3"},{"label": "1"},{"label": "It is better for usability."}]}]} />

Add row numbers before each row for pretty output format

<h2 id="output_format_pretty_single_large_number_tip_threshold">
  output\_format\_pretty\_single\_large\_number\_tip\_threshold
</h2>

<SettingsInfoBlock type="UInt64" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1000000"},{"label": "Print a readable number tip on the right side of the table if the block consists of a single number which exceeds this value (except 0)"}]}]} />

Print a readable number tip on the right side of the table if the block consists of a single number which exceeds this value (except 0)

<h2 id="output_format_pretty_squash_consecutive_ms">
  output\_format\_pretty\_squash\_consecutive\_ms
</h2>

<SettingsInfoBlock type="UInt64" default_value="50" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "50"},{"label": "Add new setting"}]}]} />

Wait for the next block for up to specified number of milliseconds and squash it to the previous before writing.
This avoids frequent output of too small blocks, but still allows to display data in a streaming fashion.

<h2 id="output_format_pretty_squash_max_wait_ms">
  output\_format\_pretty\_squash\_max\_wait\_ms
</h2>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1000"},{"label": "Add new setting"}]}]} />

Output the pending block in pretty formats if more than the specified number of milliseconds has passed since the previous output.

<h2 id="output_format_pretty_use_nbsp_for_padding">
  output\_format\_pretty\_use\_nbsp\_for\_padding
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "New setting. When enabled, padding in `Pretty` output is rendered with `U+00A0` so it survives copy-paste through tools that compress runs of regular spaces."}]}]} />

If enabled, padding in `Pretty` output formats is rendered with `U+00A0` instead of an ASCII space.
The output remains visually identical in monospace, but the padding survives tools that compress or trim runs of regular spaces.
Only takes effect when `output_format_pretty_grid_charset` is `UTF-8`.

<h2 id="output_format_protobuf_nullables_with_google_wrappers">
  output\_format\_protobuf\_nullables\_with\_google\_wrappers
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

When serializing Nullable columns with Google wrappers, serialize default values as empty wrappers. If turned off, default and null values are not serialized

<h2 id="output_format_schema">
  output\_format\_schema
</h2>

The path to the file where the automatically generated schema will be saved in [Cap'n Proto](/docs/reference/formats/CapnProto) or [Protobuf](/docs/reference/formats/Protobuf/Protobuf) formats.

<h2 id="output_format_sql_insert_include_column_names">
  output\_format\_sql\_insert\_include\_column\_names
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

Include column names in INSERT query

<h2 id="output_format_sql_insert_max_batch_size">
  output\_format\_sql\_insert\_max\_batch\_size
</h2>

<SettingsInfoBlock type="UInt64" default_value="65409" />

The maximum number  of rows in one INSERT statement.

<h2 id="output_format_sql_insert_quote_names">
  output\_format\_sql\_insert\_quote\_names
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

Quote column names with '\`' characters

<h2 id="output_format_sql_insert_table_name">
  output\_format\_sql\_insert\_table\_name
</h2>

<SettingsInfoBlock type="String" default_value="table" />

The name of table in the output INSERT query

<h2 id="output_format_sql_insert_use_replace">
  output\_format\_sql\_insert\_use\_replace
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

Use REPLACE statement instead of INSERT

<h2 id="output_format_trim_fixed_string">
  output\_format\_trim\_fixed\_string
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "New setting to trim trailing zero bytes from FixedString values in text output formats"}]}]} />

Trim trailing null bytes from FixedString values in text output formats. E.g. `toFixedString('John', 8)` is printed as `John` instead of `John\0\0\0\0`.

<h2 id="output_format_tsv_crlf_end_of_line">
  output\_format\_tsv\_crlf\_end\_of\_line
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

If it is set true, end of line in TSV format will be \r\n instead of \n.

<h2 id="output_format_values_escape_quote_with_quote">
  output\_format\_values\_escape\_quote\_with\_quote
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "0"},{"label": "If true escape ' with '', otherwise quoted with \\'"}]}]} />

If true escape ' with '', otherwise quoted with \\'

<h2 id="output_format_write_statistics">
  output\_format\_write\_statistics
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

Write statistics about read rows, bytes, time elapsed in suitable output formats.

Enabled by default
