---
title: "dot-commands-duckdb"
description: "This guide dives into the realm of dot commands, which are special commands that enhance the functionality of the DuckDB CLI, making it even more versatile…"
canonical: "https://motherduck.com/glossary/dot-commands-duckdb/"
related:
  - title: "DuckDB SQL | MotherDuck Docs"
    url: "https://motherduck.com/docs/sql-reference/duckdb-sql-reference/"
  - title: "Meet the New DuckDB Local UI: Analyze Data Visually, Right Where It Lives"
    url: "https://motherduck.com/blog/local-duckdb-ui-visual-data-analysis/"
  - title: "MotherDuck: DuckDB in the Cloud and in the Client - MotherDuck Research Papers"
    url: "https://motherduck.com/research/motherduck-duckdb-in-the-cloud-and-in-the-client/"
gated_asset:
  title: "DuckLake: The Lakehouse Table Format"
  url: "https://motherduck.com/lp/ducklake-lakehouse-table-format-book-full/"
---

# dot-commands-duckdb

> This guide dives into the realm of dot commands, which are special commands that enhance the functionality of the DuckDB CLI, making it even more versatile…

This guide dives into the realm of dot commands, which are special commands that enhance the functionality of the <a href="/glossary/duckdb/ CLI">DuckDB CLI</a>, making it even more versatile and user-friendly.

## What is DuckDB CLI?

DuckDB CLI is an interactive command-line interface that allows you to execute SQL commands and manage your data with ease. It provides a streamlined way to interact with your DuckDB databases, enabling you to query, modify, and analyze data efficiently. With its support for various dot commands, the DuckDB CLI becomes an even more powerful tool in your data management arsenal.

<glossary-callout guide="duckdb-book-brief" />

## How are dot commands used in the DuckDB CLI?

Dot commands in the DuckDB CLI offer a convenient and efficient way to control various settings and perform specific functions. These commands are prefixed with a dot (.) and can be executed directly in the CLI, providing immediate results or actions. By leveraging dot commands, you can customize your DuckDB CLI experience, optimize your workflow, and access advanced features with minimal effort.

## List of all Dot Commands with examples

### .help

The `.help` command is your go-to resource for accessing the built-in help system in the DuckDB CLI. It provides a comprehensive list of available dot commands along with their descriptions and usage instructions.

Example:

```
D .help
.auth OFF|ON           Show authorizer callbacks
.backup ?DB? FILE      Backup DB (default "main") to FILE
.bail on|off           Stop after hitting an error.  Default OFF
.binary on|off         Turn binary output on or off.  Default OFF
.cd DIRECTORY          Change the working directory to DIRECTORY
.changes on|off        Show number of rows changed by SQL
.check GLOB            Fail if output since .testcase does not match
.clone NEWDB           Clone data into NEWDB from the existing database
...
```

### .mode

The `.mode` command allows you to change the output format of the query results in the DuckDB CLI. It supports various output modes, enabling you to customize the presentation of your data.

Available modes:

* `ascii`: Renders the output in ASCII table format.
* `box`: Displays the output in a box-style table format.
* `csv`: Outputs the results in comma-separated values (CSV) format.
* `column`: Presents the output in a columnar format.
* `html`: Generates an HTML table for the output.
* `insert`: Outputs the results as SQL INSERT statements.
* `json`: Renders the output in JSON format.
* `line`: Displays the output in a one-value-per-line format.
* `list`: Presents the output as a list, with each row on a separate line.
* `markdown`: Generates a Markdown table for the output.
* `quote`: Displays the output with each value quoted.
* `table`: Renders the output in a clean table format.
* `tabs`: Outputs the results in tab-separated format.
* `tcl`: Generates a Tcl list for the output.

Example:

```
D .mode csv
D SELECT * FROM users LIMIT 3;
id,name,email
1,John Doe,john@example.com  
2,Jane Smith,jane@example.com
3,Alice Johnson,alice@example.com
```

### .timer

The `.timer` command enables or disables the display of query execution time in the DuckDB CLI. When enabled, it shows the time taken for each query to execute, providing valuable insights into performance.

Example:

```
D .timer on
D SELECT * FROM large_table LIMIT 10;
... query output ...
Run Time: real 0.012 user 0.000122 sys 0.000149
```

### .tables

The `.tables` command lists all the tables in the current database. It provides a quick overview of the available tables, making it easier to navigate and explore your data.

Example:

```
D .tables
users
products
orders
```

### .schema

The `.schema` command displays the structure of a specific table, including column names, data types, and constraints. It helps you understand the schema of your tables without having to write complex queries.

Example:

```
D .schema users
CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  name VARCHAR,
  email VARCHAR
);
```

### .import

The `.import` command allows you to import data from external files into DuckDB tables. It supports various file formats, such as CSV, JSON, and Parquet, making it convenient to load data from different sources.

Example:

```
D .import users.csv users
```

This command imports the data from the `users.csv` file into the `users` table.

### .export

The `.export` command enables you to export data from DuckDB tables to external files. It supports multiple file formats, allowing you to share your data with other systems or backup your tables.

Example:

```
D .export users users.csv
```

This command exports the data from the `users` table to the `users.csv` file.

### .dump

The `.dump` command generates a SQL script that recreates the entire database, including table structures and data. It is useful for creating backups or transferring your database to another system.

Example:

```
D .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  name VARCHAR,
  email VARCHAR
);
INSERT INTO users VALUES(1,'John Doe','john@example.com');
INSERT INTO users VALUES(2,'Jane Smith','jane@example.com');
...
COMMIT;
```

### .read

The `.read` command allows you to execute SQL statements from an external file. It is particularly handy when you have complex queries or scripts that you want to run repeatedly.

Example:

```
D .read analytics.sql
```

This command reads and executes the SQL statements from the `analytics.sql` file.

There are [several other ways](https://duckdbsnippets.com/snippets/198/run-sql-file-in-duckdb-cli) to run SQL commands in DuckDB, including by using command-line arguments and pipe syntax.

### .log

The `.log` command enables or disables logging of the DuckDB CLI session to a file. It captures all the commands executed and their output, providing a record of your interactions with the database.

Example:

```
D .log session.log
```

This command starts logging the session to the `session.log` file.

### .exit or .quit

The `.exit` or `.quit` command terminates the DuckDB CLI session gracefully. It ensures that any pending transactions are committed, and the database is properly closed.

Example:

```
D .exit
```

Mastering the DuckDB CLI with dot commands empowers you to efficiently manage and analyze your data, unlocking a world of possibilities. As you embark on your data journey, remember that the DuckDB CLI is a powerful ally, and the dot commands are your key to unlocking its full potential. If you're ready to take your data management skills to the next level, [Get Started](https://app.motherduck.com/?auth_flow=signup) with us today and experience the power of DuckDB firsthand.
