{"id":14155121,"url":"https://github.com/theseus-rs/rsql","last_synced_at":"2025-05-16T04:04:12.263Z","repository":{"id":226986701,"uuid":"770117461","full_name":"theseus-rs/rsql","owner":"theseus-rs","description":"Command line SQL interface for relational databases and common data file formats","archived":false,"fork":false,"pushed_at":"2025-05-16T00:54:00.000Z","size":52708,"stargazers_count":252,"open_issues_count":13,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-16T01:29:06.325Z","etag":null,"topics":["cockroachdb","command-line","csv","data","database","duckdb","json","mariadb","mysql","parquet","postgres","postgresql","redshift","snowflake","sql","sqlite","sqlite3","sqlserver"],"latest_commit_sha":null,"homepage":"https://theseus-rs.github.io/rsql/rsql_cli/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theseus-rs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"brianheineman"}},"created_at":"2024-03-11T00:16:55.000Z","updated_at":"2025-05-13T18:11:21.000Z","dependencies_parsed_at":"2024-04-15T00:22:35.405Z","dependency_job_id":"bac1dcc6-d51b-4126-aa92-4cb020abe909","html_url":"https://github.com/theseus-rs/rsql","commit_stats":null,"previous_names":["theseus-rs/rsql"],"tags_count":57,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theseus-rs%2Frsql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theseus-rs%2Frsql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theseus-rs%2Frsql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theseus-rs%2Frsql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theseus-rs","download_url":"https://codeload.github.com/theseus-rs/rsql/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453578,"owners_count":22073608,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cockroachdb","command-line","csv","data","database","duckdb","json","mariadb","mysql","parquet","postgres","postgresql","redshift","snowflake","sql","sqlite","sqlite3","sqlserver"],"created_at":"2024-08-17T08:02:05.023Z","updated_at":"2025-05-16T04:04:12.234Z","avatar_url":"https://github.com/theseus-rs.png","language":"Rust","funding_links":["https://github.com/sponsors/brianheineman"],"categories":["Rust","sqlite","SQL Clients and IDE that Support DuckDB"],"sub_categories":["Web Clients (WebAssembly)"],"readme":"\u003cp align=\"center\"\u003e\u003cimg width=\"250\" height=\"250\" src=\"rsql_cli/resources/rsql.png\"\u003e\u003c/p\u003e\n\n# rsql\n\n[![ci](https://github.com/theseus-rs/rsql/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/theseus-rs/rsql/actions/workflows/ci.yml)\n[![Documentation](https://docs.rs/rsql_core/badge.svg)](https://docs.rs/rsql_core)\n[![Code Coverage](https://codecov.io/gh/theseus-rs/rsql/branch/main/graph/badge.svg)](https://codecov.io/gh/theseus-rs/rsql)\n[![Benchmarks](https://img.shields.io/badge/%F0%9F%90%B0_bencher-enabled-6ec241)](https://bencher.dev/perf/theseus-rs-rsql)\n[![Latest version](https://img.shields.io/crates/v/rsql_cli.svg)](https://crates.io/crates/rsql_cli)\n[![Github All Releases](https://img.shields.io/github/downloads/theseus-rs/rsql/total.svg)](https://theseus-rs.github.io/rsql/rsql_cli/)\n[![License](https://img.shields.io/crates/l/rsql_cli)](https://github.com/theseus-rs/rsql_cli#license)\n[![Semantic Versioning](https://img.shields.io/badge/%E2%9A%99%EF%B8%8F_SemVer-2.0.0-blue)](https://semver.org/spec/v2.0.0.html)\n\n`rsql` is a command line SQL interface for data.  `rsql` is a modern, feature-rich, and user-friendly client, that has\nbeen designed to be easy to use, and to provide a consistent experience across all supported data sources.\n\n## Getting Started\n\n`rsql` can be installed using the following methods:\n\n### Linux / MacOS\n\n```shell\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/theseus-rs/rsql/releases/latest/download/rsql_cli-installer.sh | sh\n```\n\n### Windows\n\n```shell\nirm https://github.com/theseus-rs/rsql/releases/latest/download/rsql_cli-installer.ps1 | iex\n```\n\nFor more information, and additional installations instructions (cargo, homebrew, msi),\nvisit the [rsql](https://theseus-rs.github.io/rsql/rsql_cli/) site.\n\n![](./rsql_cli/resources/demo.gif)\n\n## Features\n\n| Feature               |                                                                                                                                                                                                              |\n|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Sources          | Arrow, Avro, CockroachDB, CSV, Delimited, DuckDB, DynamoDB, Excel, FWF, JSON, JSONL, LibSQL (Turso), MariaDB, MySQL, ODS, ORC, Parquet, PostgreSQL, Redshift, Snowflake, SQLite3, SQL Server, TSV, XML, YAML |\n| Compression           | Brotli, Bzip2, Gzip, LZ4, XZ, Zstd                                                                                                                                                                           |\n| Syntax Highlighting   | ✅                                                                                                                                                                                                            |\n| Result Highlighting   | ✅                                                                                                                                                                                                            |\n| Query Auto-completion | ✅                                                                                                                                                                                                            |\n| History               | ✅                                                                                                                                                                                                            |\n| SQL File Execution    | ✅                                                                                                                                                                                                            |\n| Embedded PostgreSQL   | ✅                                                                                                                                                                                                            |\n| Output Formats        | ascii, csv, expanded, html, json, jsonl, markdown, plain, psql, sqlite, tsv, unicode, xml, yaml                                                                                                              |\n| Localized Interface   | 40+ languages¹                                                                                                                                                                                               |\n| Key Bindings          | emacs, vi                                                                                                                                                                                                    |\n\n¹ Computer translations; human translations welcome\n\n## Usage\n\n### Interactive Mode\n\n```shell\nrsql --url \"\u003curl\u003e\"\n```\n\n### Running a single Query\n\n```shell\nrsql --url \"\u003curl\u003e\" -- \"\u003cquery\u003e\"\n```\n\n| Driver             | URL                                                                                                                                                                              |\n|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| arrow (polars)     | `arrow://\u003cfile\u003e`                                                                                                                                                                 |\n| avro (polars)      | `avro://\u003cfile\u003e`                                                                                                                                                                  |\n| brotli¹            | `brotli://\u003cfile\u003e`                                                                                                                                                                |\n| bzip2¹             | `bzip2://\u003cfile\u003e`                                                                                                                                                                 |\n| cockroachdb (sqlx) | `cockroachdb://\u003cuser[:password\u003e]@\u003chost\u003e[:\u003cport\u003e]/\u003cdatabase\u003e`                                                                                                                     |\n| csv (polars)       | `csv://\u003cfile\u003e[?has_header=\u003ctrue\\|false\u003e][\u0026quote=\u003cchar\u003e][\u0026skip_rows=\u003cn\u003e]`                                                                                                         |\n| delimited (polars) | `delimited://\u003cfile\u003e[?separator=\u003cchar\u003e][\u0026has_header=\u003ctrue\\|false\u003e][\u0026quote=\u003cchar\u003e][\u0026skip_rows=\u003cn\u003e]`                                                                                |\n| duckdb             | `duckdb://[\u003cfile\u003e]`                                                                                                                                                              |\n| dynamodb           | `dynamodb://[\u003caccess_key_id\u003e:\u003csecret_access_key\u003e@]\u003chost\u003e[:\u003cport\u003e]\u003e[?region=\u003cregion\u003e][\u0026session_token=\u003ctoken\u003e][\u0026scheme=\u003chttp\\|https\u003e]`                                             |\n| excel              | `excel://\u003cfile\u003e[?has_header=\u003ctrue\\|false\u003e][\u0026skip_rows=\u003cn\u003e]`                                                                                                                      |\n| file¹              | `file://\u003cfile\u003e`                                                                                                                                                                  |\n| fwf                | `fwf://\u003cfile\u003e?widths=\u003cwidths\u003e[\u0026headers=\u003cheaders\u003e]`                                                                                                                               |\n| gzip¹              | `gzip://\u003cfile\u003e`                                                                                                                                                                  |\n| http¹              | `http://\u003cpath\u003e[?_headers=\u003cheaders\u003e]`                                                                                                                                             |\n| https¹             | `https://\u003cpath\u003e[?_headers=\u003cheaders\u003e]`                                                                                                                                            |\n| json (polars)      | `json://\u003cfile\u003e`                                                                                                                                                                  |\n| jsonl (polars)     | `jsonl://\u003cfile\u003e`                                                                                                                                                                 |\n| libsql²            | `libsql://\u003chost\u003e?[\u003cmemory=true\u003e][\u0026file=\u003cdatabase_file\u003e][\u0026auth_token=\u003ctoken\u003e]`                                                                                                    |\n| lz4¹               | `lz4://\u003cfile\u003e`                                                                                                                                                                   |\n| mariadb (sqlx)     | `mariadb://\u003cuser\u003e[:\u003cpassword\u003e]@\u003chost\u003e[:\u003cport\u003e]/\u003cdatabase\u003e`                                                                                                                       |\n| mysql (sqlx)       | `mysql://\u003cuser\u003e[:\u003cpassword\u003e]@\u003chost\u003e[:\u003cport\u003e]/\u003cdatabase\u003e`                                                                                                                         |\n| ods                | `ods://\u003cfile\u003e[?has_header=\u003ctrue\\|false\u003e][\u0026skip_rows=\u003cn\u003e]`                                                                                                                        |\n| orc                | `orc://\u003cfile\u003e`                                                                                                                                                                   |\n| parquet (polars)   | `parquet://\u003cfile\u003e`                                                                                                                                                               |\n| postgres           | `postgres://\u003cuser\u003e[:\u003cpassword\u003e]@\u003chost\u003e[:\u003cport\u003e]/\u003cdatabase\u003e?\u003cembedded=true\u003e`                                                                                                      |\n| postgresql (sqlx)  | `postgresql://\u003cuser\u003e[:\u003cpassword\u003e]@\u003chost\u003e[:\u003cport\u003e]/\u003cdatabase\u003e?\u003cembedded=true\u003e`                                                                                                    |\n| redshift (sqlx)    | `redshift://\u003cuser[:password\u003e]@\u003chost\u003e[:\u003cport\u003e]/\u003cdatabase\u003e`                                                                                                                        |\n| rusqlite           | `rusqlite://[\u003cfile\u003e]`                                                                                                                                                            |\n| s3¹                | `s3://[\u003caccess_key_id\u003e:\u003csecret_access_key\u003e@]\u003chost\u003e[:\u003cport\u003e]/\u003cbucket\u003e/\u003cobject\u003e[?region=\u003cregion\u003e][\u0026session_token=\u003ctoken\u003e][\u0026force_path_style=(true\\|false)][\u0026scheme=\u003chttp\\|https\u003e]` |\n| snowflake          | `snowflake://\u003cuser\u003e[:\u003ctoken\u003e]@\u003caccount\u003e.snowflakecomputing.com/[?private_key_file=pkey_file\u0026public_key_file=pubkey_file]`                                                        |\n| sqlite (sqlx)      | `sqlite://[\u003cfile\u003e]`                                                                                                                                                              |\n| sqlserver          | `sqlserver://\u003cuser\u003e[:\u003cpassword\u003e]@\u003chost\u003e[:\u003cport\u003e]/\u003cdatabase\u003e`                                                                                                                     |\n| tsv (polars)       | `tsv://\u003cfile\u003e[?has_header=\u003ctrue\\|false\u003e][\u0026quote=\u003cchar\u003e][\u0026skip_rows=\u003cn\u003e]`                                                                                                         |\n| xml                | `xml://\u003cfile\u003e`                                                                                                                                                                   |\n| xz¹                | `xz://\u003cfile\u003e`                                                                                                                                                                    |\n| yaml               | `yaml://\u003cfile\u003e`                                                                                                                                                                  |\n| zstd¹              | `zstd://\u003cfile\u003e`                                                                                                                                                                  |\n\n¹ the driver will attempt to detect the type of file and automatically use the appropriate driver.  \n² `libsql` needs to be enabled with the `libsql` feature flag; it is disabled by default as it conflicts\nwith `rusqlite`.\n\n## Safety\n\nThese crates use `#![forbid(unsafe_code)]` to ensure everything is implemented in 100% safe Rust.\n\n## License\n\nLicensed under either of:\n\n- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or \u003chttp://opensource.org/licenses/MIT\u003e)\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any\nadditional terms or conditions.\n\n\u003ca href=\"https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/theseus-rs/rsql\"\u003e\n\u003cimg\n  src=\"https://img.shields.io/static/v1?label=VSCode%20Development%20Container\u0026logo=visualstudiocode\u0026message=Open\u0026color=orange\"\n  alt=\"VSCode Development Container\"\n/\u003e\n\u003c/a\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://github.dev/theseus-rs/rsql\"\u003e\n\u003cimg\n  src=\"https://img.shields.io/static/v1?label=GitHub%20Codespaces\u0026logo=github\u0026message=Open\u0026color=orange\"\n  alt=\"GitHub Codespaces\"\n/\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheseus-rs%2Frsql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheseus-rs%2Frsql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheseus-rs%2Frsql/lists"}