# Output settings

Output settings control binary containers, display tables, image dimensions, Markdown, and generated SQL. Each setting applies only to the formats listed in its section.

Use a statement `SETTINGS` clause. Defaults in `system.settings` are read-only;
format settings cannot be persisted with `SET`. Put input settings before
`FORMAT`, because the bytes after the format name are input data.

## arrow_compression

Type: `String`

Default value: `lz4_frame`

Compress record batch buffers with lz4_frame or zstd; none writes uncompressed buffers.

Applies to: `arrow`, `arrow_stream`.

## arrow_date_as_number

Type: `Bool`

Default value: `0`

Write Date as UInt16 days since the epoch instead of Date32; Date32 always remains Date32.

Applies to: `arrow`, `arrow_stream`.

## arrow_dictionary

Type: `Bool`

Default value: `0`

Write LowCardinality as dictionary indices and values instead of expanding its scalars.

Applies to: `arrow`, `arrow_stream`.

## arrow_dictionary_64bit_indices

Type: `Bool`

Default value: `0`

Use 64-bit dictionary indices instead of the smallest width that fits the dictionary.

Applies to: `arrow`, `arrow_stream`.

## arrow_dictionary_signed_indices

Type: `Bool`

Default value: `1`

Use signed dictionary indices; when off, use unsigned indices.

Applies to: `arrow`, `arrow_stream`.

## arrow_fixed_strings

Type: `Bool`

Default value: `1`

Write FixedString with a fixed byte width instead of variable-length Binary.

Applies to: `arrow`, `arrow_stream`.

## arrow_strings_as_text

Type: `Bool`

Default value: `1`

Write text strings as Utf8 instead of Binary; byte strings keep their exact bytes.

Applies to: `arrow`, `arrow_stream`.

## markdown_escape_special_characters

Type: `Bool`

Default value: `0`

Escape ASCII punctuation in text and byte-string values with a backslash; when off, escape controls, backslashes, and single quotes.

Applies to: `markdown`.

## parquet_compression

Type: `String`

Default value: `zstd`

Compress column pages with snappy, lz4, brotli, zstd, gzip, or none.

Applies to: `parquet`.

## parquet_fixed_strings

Type: `Bool`

Default value: `1`

Write FixedString as fixed-width bytes instead of variable-width Binary.

Applies to: `parquet`.

## parquet_page_bytes

Type: `UInt64`

Default value: `1048576`

Target uncompressed bytes per output data page.

Applies to: `parquet`.

## parquet_page_index

Type: `Bool`

Default value: `1`

Write column and offset indexes for individual data pages.

Applies to: `parquet`.

## parquet_row_group_bytes

Type: `UInt64`

Default value: `536870912`

Target output row-group bytes before compression.

Applies to: `parquet`.

## parquet_row_group_rows

Type: `UInt64`

Default value: `1000000`

Maximum rows per output row group.

Applies to: `parquet`.

## parquet_strings_as_text

Type: `Bool`

Default value: `1`

Annotate text strings as UTF-8; BLOB keeps its exact binary representation.

Applies to: `parquet`.

## parquet_wide_as_decimal

Type: `Bool`

Default value: `0`

Write 128/256-bit integers as big-endian DECIMAL instead of little-endian fixed-width bytes.

Applies to: `parquet`.

## parquet_write_batch_rows

Type: `UInt64`

Default value: `1024`

Check output data-page size after this many rows.

Applies to: `parquet`.

## parquet_write_geo

Type: `Bool`

Default value: `1`

Encode geometry as WKB and include GeoParquet column metadata.

Applies to: `parquet`.

## png_height

Type: `UInt64`

Default value: `1024`

Height of the image in pixels, from 1 through 2147483647.

Applies to: `png`.

## png_time_denominator

Type: `UInt64`

Default value: `60`

Positive denominator of the duration in seconds of one integer t unit.

Applies to: `png`.

## png_time_numerator

Type: `UInt64`

Default value: `1`

Positive numerator of the duration in seconds of one integer t unit.

Applies to: `png`.

## png_width

Type: `UInt64`

Default value: `1024`

Width of the image in pixels, from 1 through 2147483647.

Applies to: `png`.

## pretty_borders

Type: `String`

Default value: `unicode`

The characters that draw the table: unicode for box-drawing lines, ascii for plus, minus, and bar.

Applies to: `pretty_compact`.

## pretty_footer_from_rows

Type: `UInt64`

Default value: `0`

Repeat the column names in the bottom border when the table shows at least this many rows; 0 never repeats them.

Applies to: `pretty_compact`.

## pretty_max_cell_width

Type: `UInt64`

Default value: `0`

Cut a value wider than this many terminal columns and mark the cut; 0 never cuts.

Applies to: `pretty_compact`.

## pretty_max_padding

Type: `UInt64`

Default value: `0`

Align a column to at most this many terminal columns; wider values extend their own row. 0 aligns to the widest value.

Applies to: `pretty_compact`.

## pretty_max_rows

Type: `UInt64`

Default value: `0`

Show at most this many rows and report how many were left out; 0 shows every row.

Applies to: `pretty_compact`.

## pretty_row_numbers

Type: `Bool`

Default value: `0`

Add a first column that numbers the rows from 1.

Applies to: `pretty_compact`.

## sql_insert_batch_rows

Type: `UInt64`

Default value: `65505`

Write at most this many rows per INSERT or REPLACE statement; 0 writes one row per statement.

Applies to: `sql_insert`.

## sql_insert_column_names

Type: `Bool`

Default value: `1`

Include the result column names before VALUES in each written statement.

Applies to: `sql_insert`.

## sql_insert_quote_names

Type: `Bool`

Default value: `1`

Surround each written column name with backticks; names and the table text are otherwise written verbatim.

Applies to: `sql_insert`.

## sql_insert_replace

Type: `Bool`

Default value: `0`

Write REPLACE INTO instead of INSERT INTO.

Applies to: `sql_insert`.

## sql_insert_table

Type: `String`

Default value: `table`

The table text written verbatim after INSERT INTO or REPLACE INTO; include any desired qualification or quoting.

Applies to: `sql_insert`.

## sqlite_write_table

Type: `String`

Default value: `table`

Name of the single table written to the output database.

Applies to: `sqlite`.
