⌘K ctrl+k
Search Shortcut cmd + k | ctrl + k
Command Line Arguments

The table below summarizes DuckDB's command line options. To list all command line options, use the command:

duckdb -help

For a list of dot commands available in the CLI shell, see the Dot Commands page.

Argument Description  
-append Append the database to the end of the file  
-ascii Set output mode to ascii  
-bail Stop after hitting an error  
-batch Force batch I/O  
-box Set output mode to box  
-column Set output mode 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 to csv  
-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)  
-init FILENAME Run the script in FILENAME upon startup (instead of ~/.duckdbrc)  
-header Turn headers on  
-help Show this message  
-html Set output mode to HTML  
-interactive Force interactive I/O  
-json Set output mode to json  
-line Set output mode to line  
-list Set output mode to list  
-manual FUNCTION Show the manual page for a SQL function and exit  
-markdown Set output mode to markdown  
-newline SEP Set output row separator. Default: \n  
-nofollow Refuse to open symbolic links to database files  
-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 to quote  
-readonly Open the database read-only. This option also supports attaching to remote databases via HTTPS  
-s COMMAND Run COMMAND and exit  
-separator SEP Set output column separator to SEP. Default: ` `
-serve [quack[:SECRET]] Serve the opened database with Quack. A named secret can be provided after the type  
-storage-version VER Database storage compatibility version to use. To use the latest storage version, pass -storage-version latest  
-table Set output mode to table  
-ui Loads and starts the DuckDB UI. If the UI is not yet installed, it installs the ui extension  
-unsigned Allow loading of unsigned extensions. This option is intended to be used for developing extensions. Consult the Securing DuckDB page 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 will be introduced in DuckDB 2.0.

The -serve argument starts a Quack server for the database opened by the CLI. Without a database path or additional configuration, it serves an in-memory database on localhost:9494:

duckdb -serve

To serve a persistent database, provide its path before -serve:

duckdb analytics.duckdb -serve

The -connect argument connects the CLI to a remote database. It defaults to Quack's unnamed secret:

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:

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.

Passing a Sequence of Arguments

Note that the CLI arguments are processed in order, similarly to the behavior of the SQLite CLI. For example:

duckdb -csv -c 'SELECT 42 AS hello' -json -c 'SELECT 84 AS world'

Returns the following:

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.

© 2026 DuckDB Foundation, Amsterdam NL
DuckDB Home Code of Conduct Trademark Use Blog