sling-cli is a free, open source data engineering & integration project written in Go and released under GPL-3.0. It has 904 GitHub stars, 81 forks and 38 open issues, and was last pushed 4 hours ago. On this registry it ranks #38 of 51 tracked projects in Data Engineering & Integration, with 5 head-to-head comparisons available.

Slings from a data source to a data target.

See docs.slingdata.io for more details.

GitHub Go Reference Discord GitHub tag (latest SemVer pre-release) Pip Downloads Pip Downloads

Sling is a passion project turned into a free CLI Product which offers an easy solution to create and maintain small to medium volume data pipelines using the Extract & Load (EL) approach. It focuses on data movement between:

  • Database to Database
  • File System to Database
  • Database to File System
  • API to Database
  • API to File System

https://github.com/slingdata-io/sling-cli/assets/7671010/e10ee716-1de8-4d53-8eb2-95c6d9d7f9f0

Some key features:

  • Single Binary deployment (built with Go). See installation page.
  • Use Custom SQL as a stream: --src-stream='select * from my_table where col1 > 10'
  • Manage / View / Test / Discover your connections with the sling conns sub-command
  • Use Environment Variable as connections if you prefer (export MY_PG='postgres//...)'
  • Provide YAML or JSON configurations (perfect for git version control).
  • Powerful Replication logic, to replication many tables with a wildcard (my_schema.*).
  • Reads your existing DBT connections
  • Use your environment variable in your YAML / JSON config (select * from my_table where date = '{date}')
  • Convenient Transformations, such as the flatten option, which auto-creates columns from your nested fields.
  • Run Pre & Post SQL commands.
  • many more!

Example Replication:

replication.yaml


Available Connectors:

Here are some additional links:


Ever wanted to quickly pipe in a CSV or JSON file into your database? Use sling to do so:

cat my_file.csv | sling run --tgt-conn MYDB --tgt-object my_schema.my_table

Or want to copy data between two databases? Do it with sling:

sling run --src-conn PG_DB --src-stream public.transactions \
  --tgt-conn MYSQL_DB --tgt-object mysql.bank_transactions \
  --mode full-refresh

Sling can also easily manage our local connections with the sling conns command:

$ sling conns set MY_PG url='postgresql://postgres:myPassword@pghost:5432/postgres'

$ sling conns list
+--------------------------+-----------------+-------------------+
| CONN NAME                | CONN TYPE       | SOURCE            |
+--------------------------+-----------------+-------------------+
| AWS_S3                   | FileSys - S3    | sling env yaml    |
| FINANCE_BQ               | DB - BigQuery   | sling env yaml    |
| DO_SPACES                | FileSys - S3    | sling env yaml    |
| LOCALHOST_DEV            | DB - PostgreSQL | dbt profiles yaml |
| MSSQL                    | DB - SQLServer  | sling env yaml    |
| MYSQL                    | DB - MySQL      | sling env yaml    |
| ORACLE_DB                | DB - Oracle     | env variable      |
| MY_PG                    | DB - PostgreSQL | sling env yaml    |
+--------------------------+-----------------+-------------------+

$ sling conns discover LOCALHOST_DEV
9:05AM INF Found 344 streams:
 - "public"."accounts"
 - "public"."bills"
 - "public"."connections"
 ...

Installation

One-liner on Mac / Linux
curl -fsSL https://slingdata.io/install.sh | bash

# You're good to go!
sling -h
One-liner on Windows (PowerShell)
irm https://slingdata.io/install.ps1 | iex

# You're good to go!
sling -h
Brew on Mac
brew install slingdata-io/sling/sling
Scoop on Windows
scoop bucket add sling https

readme truncated — read the full docs on github

Frequently asked questions

Is sling-cli free to use?

sling-cli is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does sling-cli do?

Sling is a CLI tool that extracts data from a source storage/database and loads it in a target storage/database.

What is sling-cli written in?

sling-cli is primarily written in Go. Its source is publicly available at https://github.com/slingdata-io/sling-cli, and it has 904 GitHub stars.