Skip to main content

CLI for SQL of InterSystems IRIS Databases with auto-completion and syntax highlighting.

Project description

A REPL for InterSystems IRIS SQL

This is a InterSystems IRIS client that does auto-completion and syntax highlighting.

Based on pgcli

irissqlcli

Quick Start

With Python

pip install -U irissqlcli

Or with homebrew

brew tap caretdev/tap
brew install irissqlcli

Usage

$ irissqlcli [uri]

or

$ irissqlcli iris://[user[:password]@][netloc][:port][/namespace]

or

$ irissqlcli iris+emb://[/namespace]

Examples:

$ irissqlcli iris://_SYSTEM:SYS@localhost:1972/USER

$ irissqlcli iris+emb:///

For more details:

$ irissqlcli --help
Usage: irissqlcli [OPTIONS] [URI] [USERNAME]

Options:
-h, --host TEXT         Host address of the IRIS instance.
-p, --port INTEGER      Port number at which the IRIS instance is listening.
-U, --username TEXT     Username to connect to the IRIS instance.
-u, --user TEXT         Username to connect to the IRIS instance.
-W, --password          Force password prompt.
-v, --version           Version of irissqlcli.
-n, --nspace TEXT       namespace name to connect to.
-q, --quiet             Quiet mode, skip intro on startup and goodbye on
                        exit.
-l, --logfile FILENAME  Log every query and its results to a file.
--irissqlclirc FILE     Location of irissqlclirc file.
--auto-vertical-output  Automatically switch to vertical output mode if the
                        result is wider than the terminal width.
--row-limit INTEGER     Set threshold for row limit prompt. Use 0 to disable
                        prompt.
-t, --table             Display batch output in table format.
--csv                   Display batch output in CSV format.
--warn / --no-warn      Warn before running a destructive query.
-e, --execute TEXT      Execute command and quit.
--help                  Show this message and exit.

irissqlcli also supports environment variables for login options (e.g. IRIS_HOSTNAME, IRIS_PORT, IRIS_NAMESPACE, IRIS_USERNAME, IRIS_PASSWORD).

Features

The irissqlcli is written using prompt_toolkit_.

  • Auto-completes as you type for SQL keywords as well as tables and columns in the database.

  • Syntax highlighting using Pygments.

  • Smart-completion (enabled by default) will suggest context-sensitive completion.

    • SELECT * FROM <tab> will only show table names.
    • SELECT * FROM users WHERE <tab> will only show column names.
  • Pretty prints tabular data.

Config

A config file is automatically created at ~/.config/irissqlcli/config at first launch. See the file itself for a description of all available options.

Docker

irisqlcli can be run from within Docker. This can be useful to try irissqlcli without installing it, or any dependencies, system-wide.

To create a container from the image:

$ docker run --rm -ti caretdev/irissqlcli irissqlcli <ARGS>

To access InterSystems IRIS databases listening on localhost, make sure to run the docker in "host net mode". E.g. to access a database called "foo" on the IRIS server running on localhost:1972 (the standard port):

$ docker run --rm -ti --net host caretdev/irissqlcli irissqlcli iris://_SYSTEM:SYS@localhost:1972/USER

or without `host net mode`

$ docker run --rm -ti caretdev/irissqlcli irissqlcli iris://_SYSTEM:SYS@host.docker.internal:1972/USER

IPython

irisqlcli can be run from within IPython console. When working on a query, it may be useful to drop into a irissqlcli session without leaving the IPython console, iterate on a query, then quit irissqlcli to find the query results in your IPython workspace.

Assuming you have IPython installed:

$ pip install sqlalchemy~=1.4.0 ipython-sql sqlalchemy-iris

After that, run ipython and load the irissqlcli.magic extension:

$ ipython

In [1]: %load_ext irissqlcli.magic

or 
$ ipython --ext irissqlcli.magic

Connect to a database:

In [2]: %irissqlcli iris://_SYSTEM:SYS@localhost:1972/USER
self.dialect <class 'sqlalchemy_iris.iris.IRISDialect_iris'>
sqlalchemy.MetaData <class 'sqlalchemy.sql.schema.MetaData'>
Server:  InterSystems IRIS Version 2022.2.0.368 xDBC Protocol Version 65
Version: 0.1.0
[SQL]_SYSTEM@localhost:USER> select top 10 table_schema,table_name from information_schema.tables
+--------------------+----------------+
| TABLE_SCHEMA       | TABLE_NAME     |
+--------------------+----------------+
| %CSP_Util          | CSPLogEvent    |
| %CSP_Util          | Performance    |
| %Calendar          | Hijri          |
| %Compiler_Informix | ConversionRule |
| %Compiler_Informix | ImportedObject |
| %Compiler_Informix | Symbol         |
| %Compiler_LG       | WrapperPropDef |
| %Compiler_TSQL     | sysSymbol      |
| %DeepSee           | IDList         |
| %DeepSee           | TempSourceId   |
+--------------------+----------------+
10 rows in set
Time: 0.074s
[SQL]_SYSTEM@localhost:USER>

Exit out of irissqlcli session with Ctrl + D and find the query results:

[SQL]_SYSTEM@localhost:USER>                                                                                                                                     
Goodbye!
Done.
Out[2]: 
[('%DocDB', 'Database'),
 ('%ExtentMgr', 'GUID'),
 ('%ExtentMgr', 'GlobalRegistry'),
 ('%ExtentMgr_Catalog', 'Extent'),
 ('%ExtentMgr_Catalog', 'Index'),
 ('%ExtentMgr_Catalog', 'Property'),
 ('%ExtentMgr_Catalog', 'ShardIdRanges'),
 ('%SYS_Maint', 'Bitmap'),
 ('%SYS_Maint', 'BitmapResults'),
 ('%SYS_Maint', 'Bitmap_Message')]

The results are available in special local variable _, and can be assigned to a variable of your choice:

In [3]: my_result = _

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

irissqlcli-0.6.0.tar.gz (43.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

irissqlcli-0.6.0-py3-none-any.whl (46.6 kB view details)

Uploaded Python 3

File details

Details for the file irissqlcli-0.6.0.tar.gz.

File metadata

  • Download URL: irissqlcli-0.6.0.tar.gz
  • Upload date:
  • Size: 43.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for irissqlcli-0.6.0.tar.gz
Algorithm Hash digest
SHA256 5e0e100bca0efe4f02a9ae7a6dab5243485cd873b276a99a1e53302094e1cb1a
MD5 8028695481ed9ff6012099d5865e60e9
BLAKE2b-256 016874ddf4f50dd17e2e7694bf7d4c52db04f858a5313a3fa9678f8cc1c23a30

See more details on using hashes here.

Provenance

The following attestation bundles were made for irissqlcli-0.6.0.tar.gz:

Publisher: ci.yml on caretdev/irissqlcli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file irissqlcli-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: irissqlcli-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 46.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for irissqlcli-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7f81e34251945aacc2326a27ed35f7a18ce698bc47ad25b14addc6393a30de8a
MD5 d50c8df5c2b9c5d1ff4955bd1ebd027d
BLAKE2b-256 717d7af5ce593a4473151d22c72887f5725b6a9b873be547a1d64faa02654370

See more details on using hashes here.

Provenance

The following attestation bundles were made for irissqlcli-0.6.0-py3-none-any.whl:

Publisher: ci.yml on caretdev/irissqlcli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page