Installation

An introduction to using the Sling CLI tool.

Getting Started

sling CLI is a free tool that allows data extraction and loading from / into many popular databases / storage platforms. Follow the instructions below to install it on your respective operating system.

Installation

Brew on Mac

brew install slingdata-io/sling/sling

# You're good to go!
sling -h

Scoop on Windows

scoop bucket add sling https://github.com/slingdata-io/scoop-sling.git
scoop install sling

# You're good to go!
sling -h

Linux

curl -LO 'https://github.com/slingdata-io/sling-cli/releases/latest/download/sling_linux_amd64.tar.gz' \
  && tar xf sling_linux_amd64.tar.gz \
  && rm -f sling_linux_amd64.tar.gz \
  && chmod +x sling

# You're good to go!
./sling -h

Docker

docker pull slingdata/sling

docker run --rm -i slingdata/sling --help

Other Binary Downloads

See Releases on Github.

Setting up your Connections

Sling looks for credentials in several places:

  • Environment Variables

  • Sling Env File (located at ~/.sling/env.yaml)

  • DBT Profiles Files (located at ~/.dbt/profiles.yml)

Please see environment for more details.

Using Sling

sling CLI is designed to be easy to use. Say we want to load a CSV file into a PostgreSQL database. We could run the following command:

export MY_PG='postgresql://user:mypassw@pg.host:5432/db1'

sling run --src-stream file:///path/to/myfile.csv --tgt-conn MY_PG --tgt-object public.my_new_data

# OR pipe it in
cat /path/to/myfile.csv | sling run --tgt-conn MY_PG --tgt-object public.my_new_data
Demo of some sling action

Notice how we didn't need to specify table columns / data types. sling automatically detects those and creates the appropriate columns. We can also notice that we are using an environment variable MY_PG for connecting to our PostgreSQL server.

See here for configuration details and lots of examples!

With Python

If you have Python pip installed, you can simply run:

pip install sling

You call also check out the Python wrapper library on github.

from sling import Sling

config = {
  'source': {
    'conn': 'MY_PG',
    'stream': "select * from my_table",
  },
  'target': {
    'conn':  "MY_AWS_S3",
    'object':  "s3://my_bucket/my_folder/new_file.csv",
  },
}

Sling(**config).run()

Last updated