--- layout: docu redirect_from: - /docs/cli/arguments - /docs/clients/cli/arguments - /docs/stable/clients/cli/arguments - /docs/current/clients/cli/arguments - /docs/lts/clients/cli/arguments - /docs/preview/clients/cli/arguments title: Command Line Arguments --- The table below summarizes DuckDB's command line options. To list all command line options, use the command: ```batch duckdb -help ``` For a list of dot commands available in the CLI shell, see the [Dot Commands page]({% link docs/2.0/clients/cli/dot_commands.md %}). | Argument | Description | | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-agent` | Render output for an AI coding agent. See the [Agent Mode page]({% link docs/2.0/clients/cli/agent_mode.md %}) | | `-ascii` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `ascii` | | `-bail` | Stop after hitting an error | | `-batch` | Force batch I/O | | `-box` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `box` | | `-column` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `column` | | `-cmd COMMAND` | Run `COMMAND` before reading `stdin` | | `-connect [TYPE[:SECRET]]` | Connect to a remote database. The default type is `quack`. A named secret can be provided after the type | | `-c COMMAND` | Run `COMMAND` and exit | | `-csv` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `csv` | | `-dark-mode` | Use dark mode colors for [syntax highlighting]({% link docs/2.0/clients/cli/friendly_cli.md %}#darklight-mode) | | `-echo` | Print commands before execution | | `-f FILENAME` | Run the script in `FILENAME` and exit. Note that the `~/.duckdbrc` is read and executed first (if it exists) | | `-format` | Format SQL read from `stdin`, writing the result to `stdout` | | `-format-file FILENAME` | Format the SQL in `FILENAME`, writing the result to `stdout` | | `-init FILENAME` | Run the script in `FILENAME` upon startup (instead of `~/.duckdbrc`) | | `-header` | Turn headers on | | `-h` | Show the help message | | `-help` | Show the help message | | `-html` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to HTML | | `-interactive` | Force interactive I/O | | `-json` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `json` | | `-jsonlines` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `jsonlines` | | `-light-mode` | Use light mode colors for [syntax highlighting]({% link docs/2.0/clients/cli/friendly_cli.md %}#darklight-mode) | | `-line` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `line` | | `-list` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `list` | | `-manual FUNCTION` | Show the [manual page]({% link docs/2.0/clients/cli/dot_commands.md %}#displaying-function-documentation) for a SQL function and exit | | `-markdown` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `markdown` | | `-newline SEP` | Set output row separator. Default: `\n` | | `-no-agent` | Never render output for an AI coding agent. See the [Agent Mode page]({% link docs/2.0/clients/cli/agent_mode.md %}) | | `-no-init` | Skip processing the init file (`~/.duckdbrc` or the file passed to `-init`) | | `-noheader` | Turn headers off | | `-no-stdin` | Exit after processing options instead of reading stdin | | `-nullvalue TEXT` | Set text string for `NULL` values. Default: `NULL` | | `-quote` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `quote` | | `-readonly` | Open the database read-only. This option also supports attaching to remote databases via HTTPS | | `-s COMMAND` | Run `COMMAND` and exit | | `-safe` | Enable [safe mode]({% link docs/2.0/clients/cli/safe_mode.md %}) | | `-separator SEP` | Set output column separator to `SEP`. Default: ` | ` | | `-serve [quack[:SECRET]]` | Serve the opened database with [Quack]({% link docs/2.0/quack/overview.md %}). A named secret can be provided after the type | | `-storage-version VER` | Database [storage compatibility version]({% link docs/2.0/internals/storage.md %}#storage-version-table) to use. To use the latest storage version, pass `-storage-version latest` | | `-table` | Set [output mode]({% link docs/2.0/clients/cli/output_formats.md %}) to `table` | | `-ui` | Loads and starts the [DuckDB UI]({% link docs/2.0/core_extensions/ui.md %}). If the UI is not yet installed, it installs the `ui` extension | | `-unredacted` | Allow printing unredacted [secrets]({% link docs/2.0/configuration/secrets_manager.md %}). Sets the `allow_unredacted_secrets` option to `true` | | `-unsigned` | Allow loading of [unsigned extensions]({% link docs/2.0/extensions/extension_distribution.md %}#unsigned-extensions). This option is intended to be used for developing extensions. Consult the [Securing DuckDB page]({% link docs/2.0/operations_manual/securing_duckdb/securing_extensions.md %}) for guidelines on how to set up DuckDB in a secure manner | | `-version` | Show DuckDB version | ## Serving and Connecting to Remote Databases > New The `-serve` and `-connect` arguments were introduced in DuckDB 2.0. The `-serve` argument starts a [Quack]({% link docs/2.0/quack/overview.md %}) server for the database opened by the CLI. Without a database path or additional configuration, it serves an in-memory database on `localhost:9494`: ```batch duckdb -serve ``` To serve a persistent database, provide its path before `-serve`: ```batch duckdb analytics.duckdb -serve ``` The `-connect` argument connects the CLI to a remote database. Without arguments, it connects to the Quack server on `localhost:9494` using the default `quack` secret. If this secret does not exist yet, `-serve` creates it as a persistent secret, so running `duckdb -serve` and `duckdb -connect` on the same machine works without further setup: ```batch duckdb -connect ``` Both arguments accept a connection type and an optional named secret in the form `TYPE:SECRET`. Only the `quack` type can be served. For example, after creating a persistent Quack secret named `analytics`, serve or connect with: ```batch duckdb analytics.duckdb -serve quack:analytics duckdb -connect quack:analytics ``` The `-connect` argument cannot be combined with a local database path because the CLI acts as a client for the remote database. The SQL commands executed by `-serve` and `-connect` can be customized using the [`.serve_command` and `.connect_command` dot commands]({% link docs/2.0/clients/cli/dot_commands.md %}), e.g., in the `~/.duckdbrc` file. By default, `-serve` calls `quack_serve` and `-connect` runs a `CONNECT` statement. ## Passing a Sequence of Arguments Note that the CLI arguments are processed in order, similarly to the behavior of the SQLite CLI. For example: ```batch duckdb -csv -c 'SELECT 42 AS hello' -json -c 'SELECT 84 AS world' ``` Returns the following: ```text hello 42 [{"world":84}] ``` > The `-init` script (or the default `~/.duckdbrc` when `-init` is not given) is an exception: it always runs at startup, before any `-cmd`, `-c`, or `-s` command, regardless of where it appears on the command line. You therefore cannot use a `-cmd` argument to inject configuration that takes effect before the init script runs. To set configuration that the init script depends on, place it at the top of the init script itself.