*New* The MotherDuck Native Integration is Live on Vercel Marketplace for Embedded Analytics and Data AppsLearn more

DuckDB CLI: A Guide to Dot Commands

Back to DuckDB Data Engineering Glossary

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 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.

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:

Copy code

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:

Copy code

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:

Copy code

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:

Copy code

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:

Copy code

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:

Copy code

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:

Copy code

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:

Copy code

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:

Copy code

D .read analytics.sql

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

There are several other ways 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:

Copy code

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:

Copy code

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 with us today and experience the power of DuckDB firsthand.