Getting Started with Sling CLI
An introduction to using the Sling CLI tool.
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.brew install slingdata-io/sling/sling
# You're good to go!
sling -h
scoop bucket add sling https://github.com/slingdata-io/scoop-sling.git
scoop install sling
# You're good to go!
sling -h
docker pull slingdata/sling
docker run --rm -i slingdata/sling --help
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
)
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:Linux
Mac
Windows
Docker
export MY_PG='postgresql://user:[email protected]: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
export MY_PG='postgresql://user:[email protected]: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
# using windows Powershell
$env:MY_PG = 'postgresql://user:[email protected]:5432/db1'
sling run --src-stream file://C:/path/to/myfile.csv --tgt-conn MY_PG --tgt-object public.my_new_data
# OR pipe it in
cat C:\path\to\myfile.csv | sling run --tgt-conn MY_PG --tgt-object public.my_new_data
export MY_PG='postgresql://user:[email protected]:5432/db1'
docker run --rm -i -e MY_PG -v /path/to/myfile.csv slingdata/sling run --src-stream file:///path/to/myfile.csv --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.If you have Python
pip
installed, you can simply run:pip install sling
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 modified 1mo ago