Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
CLI for SQL of InterSystems IRIS Databases with auto-completion and syntax highlighting.
This is a InterSystems IRIS client that does auto-completion and syntax highlighting.
Based on pgcli
With Python
pip install -U irissqlcli
Or with homebrew
brew tap caretdev/tap
brew install irissqlcli
$ 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
).
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.
A config file is automatically created at ~/.config/irissqlcli/config
at first launch.
See the file itself for a description of all available options.
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
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 = _
FAQs
CLI for SQL of InterSystems IRIS Databases with auto-completion and syntax highlighting.
We found that irissqlcli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.