Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Command-line shell for issuing SQL to relational databases via JDBC.


A fork of Marc Prud'hommeaux's sqlline project, also incorporating changes made by the LucidDB project, now modernized, mavenized and forkable in github. See also release history.

License and distribution

SQLLine is distributed under the 3-clause BSD License, meaning that you are free to redistribute, modify, or sell it with almost no restrictions.

It is distributed via the Maven Central Repository.



Quick start

If you have Coursier installed, you can quickly connect to a demo Hypersonic database with:

$ coursier launch sqlline:sqlline:1.12.0 org.hsqldb:hsqldb:2.5.0 net.hydromatic:foodmart-data-hsqldb:0.4 -M sqlline.SqlLine -- -u jdbc:hsqldb:res:foodmart -n FOODMART -p FOODMART -d org.hsqldb.jdbcDriver
0: jdbc:hsqldb:res:foodmart> select avg("shelf_height" * "shelf_width" * "shelf_depth") as "avg_volume" from "product";
|       avg_volume        |
| 2147.3845245442353      |
1 row selected (0.01 seconds)
0: jdbc:hsqldb:res:foodmart> !quit

Getting started

Copy the sqlline script (or sqlline.bat for Windows), sqlline-VERSION-jar-with-dependencies.jar and a JDBC driver jar into the same directory. (Or just put sqlline on your PATH.)

$ sqlline -d com.mysql.jdbc.Driver
sqlline> !connect jdbc:mysql://localhost:3306/scott user password
sqlline> !tables
| null       | SCOTT        | BONUS       | TABLE         | null     |
| null       | SCOTT        | DEPT        | TABLE         | null     |
| null       | SCOTT        | EMP         | TABLE         | null     |
| null       | SCOTT        | SALGRADE    | TABLE         | null     |
| null       | metadata     | COLUMNS     | SYSTEM_TABLE  | null     |
| null       | metadata     | TABLES      | SYSTEM_TABLE  | null     |
sqlline> SELECT 1 + 2 AS c;
| C |
| 3 |
sqlline> !quit

To get help:

$ sqlline --help

If you prefer, you can invoke Java directly, without using the sqlline script:

$ java -jar sqlline-VERSION-jar-with-dependencies.jar --help

Connecting using URLs

A URL (or connect string) is a string that specifies the location of your database, and perhaps credentials and other parameters specific to your database's JDBC driver. It always starts with 'jdbc:', usually followed by the machine name of the database and additional parameters.

For example, the following bash command connects to Apache Drill, assuming that Drill is installed in /opt/apache-drill-1.15.0:

$ /opt/apache-drill-1.15.0/bin/sqlline -u ";auth=kerberos"

Because ';' is a command separator in bash, the URL is included in double-quotes ('"'). You will need to quote the URL and other arguments if they contain characters that are special in your shell; different shells have different special characters, but space (' '), dollar ('$'), single-quote ('''), bang ('!') and percent ('%') are some common examples.

Read the manual.

Maven Usage

Use the following definition to use sqlline in your maven project:



To build or run SQLLine, you need Java 8 or higher. (When running on Java 15 and higher, you will need to set scriptEngine before you use promptscript.)

Check out and build:

git clone git://
cd sqlline
./mvnw package


More information