Einführung in die Sling-Befehlszeilenschnittstelle
Sling CLI ist ein Befehlszeilentool, das ein einfaches und effizientes Verschieben von Daten (Extrahieren und Laden) von/zu Datenbanken, Speicherplattformen und SaaS-Anwendungen ermöglicht. Der Einstieg ist einfach, Sie können einfach pip install sling
ausführen, wenn Sie Pip von Python installiert haben. Oder Sie können die Binärdatei für Ihren Computer [hier] herunterladen (https://docs.slingdata.io/sling-cli/getting-started).
Anmeldeinformationen für die Verbindung
Um sling
verwenden zu können, müssen wir zuerst Verbindungsdaten konfigurieren, und die Sling-Befehlszeilenschnittstelle sucht an verschiedenen Stellen danach. Dies ermöglicht eine „Plug & Play“-Natur, wenn Sie bereits ein anderes Tool wie dbt
verwenden oder Verbindungs-URLs in Umgebungsvariablen festgelegt haben. Es wird jedoch empfohlen, die env.yaml
-Datei von Sling zu verwenden, da sie eine konsistentere und flexiblere Erfahrung ermöglicht.
Sling-Env-Datei
Wenn Sie den Befehl sling
zum ersten Mal ausführen, wird der Ordner .sling
im Basisverzeichnis des aktuellen Benutzers (~/.sling
) erstellt, der wiederum eine Datei namens env.yaml
enthält. Die Struktur für die Env-Datei von Sling ist einfach, Sie legen die Anmeldeinformationen Ihrer Verbindungen unter dem Schlüssel connections
ab, wie unten gezeigt:
connections:
marketing_pg:
url: 'postgres://...'
ssh_tunnel: 'ssh://...' # optional
# oder dbt-Profil gestylt
marketing_pg:
type: postgres
host: [hostname]
user: [username]
password: [password]
port: [port]
dbname: [database name]
schema: [dbt schema]
ssh_tunnel: 'ssh://...'
finance_bq:
type: bigquery
method: service-account
project: [GCP project id]
dataset: [the name of your dbt dataset]
keyfile: [/path/to/bigquery/keyfile.json]
# globale Variablen, zur Laufzeit für alle Verbindungen verfügbar (optional)
variables:
aws_access_key: '...'
aws_secret_key: '...'
Bitte siehe hier für alle akzeptierten Verbindungstypen und den jeweils benötigten Datenpunkt.
Wenn Sie den sling conns list
-Befehl mit Sling Env-Anmeldeinformationen verwenden, wird die SOURCE
-Spalte als sling env yaml
angezeigt.
Umgebungsvariablen
Wenn Sie lieber Umgebungsvariablen verwenden möchten, reicht es aus, diese wie gewohnt in Ihrer Shell-Umgebung zu setzen:
# Mac / Linux
export MY_PG='postgresql://user:mypassw@pg.host:5432/db1'
export MY_SNOWFLAKE='snowflake://user:mypassw@sf.host/db1'
export ORACLE_DB='oracle://user:mypassw@orcl.host:1521/db1'
# Windows-Powershell
set MY_PG 'postgresql://user:mypassw@pg.host:5432/db1'
set MY_SNOWFLAKE 'snowflake://user:mypassw@sf.host/db1'
set ORACLE_DB 'oracle://user:mypassw@orcl.host:1521/db1'
Wenn Sie den Befehl sling conns list
mit Umgebungsvariablen verwenden, wird die Spalte SOURCE
als env variable
angezeigt.
DBT-Profile
dbt
ist ein weiteres beliebtes Tool, das viele Datenfachleute täglich verwenden, und die Unterstützung bestehender lokaler Profile ermöglicht eine einfache übergreifende Nutzung. Der typische Speicherort für die dbt-Anmeldeinformationen befindet sich in der Datei ~/dbt/profiles.yml
. Weitere Einzelheiten finden Sie hier.
Wenn Sie über dbt
-Anmeldeinformationen verfügen und den Befehl sling conns list
verwenden, wird die Spalte SOURCE
als dbt profiles yaml
angezeigt.
Der Unterbefehl conns
Nachdem Sie nun Anmeldedaten festgelegt haben, bietet Sling einen conns
-Unterbefehl zur Interaktion mit den Verbindungen. Wir können die folgenden Operationen ausführen: list
, test
und discover
.
$ sling conns -h
conns - Manage local connections
Usage:
conns [discover|list|test]
Subcommands:
discover list available streams in connection
list list local connections detected
test test a local connection
Flags:
--version Displays the program version string.
-h --help Displays help with available flag, subcommand, and positional value parameters.
Verbindungen auflisten
Es ist praktisch, alle in unserer Umgebung verfügbaren Verbindungen anzuzeigen und aufzulisten. Wir können einfach den Befehl sling conns list
ausführen. Hier ist ein Beispiel:
$ sling conns list
+----------------------+------------------+-------------------+
| CONN NAME | CONN TYPE | SOURCE |
+----------------------+------------------+-------------------+
| AWS_S3 | FileSys - S3 | sling env yaml |
| AZURE_STORAGE | FileSys - Azure | sling env yaml |
| BIGQUERY | DB - BigQuery | sling env yaml |
| BIONIC_DB1 | DB - PostgreSQL | dbt profiles yaml |
| BTD_S3 | FileSys - S3 | sling env yaml |
| CLICKHOUSE | DB - Clickhouse | sling env yaml |
| DEMO_POSTGRES | DB - PostgreSQL | sling env yaml |
| GITHUB_DBIO | API - GitHub | sling env yaml |
| NOTION | API - Notion | sling env yaml |
| SNOWFLAKE | DB - Snowflake | env variable |
| STEAMPIPE | DB - PostgreSQL | sling env yaml |
+----------------------+------------------+-------------------+
Verbindungen testen
Das Sling-CLI-Tool ermöglicht auch das Testen von Verbindungen. Sobald wir den Verbindungsnamen kennen, können wir den Befehl sling conns test
verwenden:
$ sling conns test -h
test - test a local connection
Usage:
test [name]
Positional Variables:
name The name of the connection to test (Required)
Flags:
--version Displays the program version string.
-h --help Displays help with available flag, subcommand, and positional value parameters.
Hier ist ein aktuelles Beispiel:
$ sling conns test MSSQL
6:42PM INF success!
Erkennung von Connection Streams
Dies ist ein weiterer raffinierter Unterbefehl, mit dem man sehen kann, welche Datenströme für sling
verfügbar sind, aus denen für eine bestimmte Verbindung gelesen wird: der sling conns discover
-Befehl.
$ sling conns discover -h
discover - list available streams in connection
Usage:
discover [name]
Positional Variables:
name The name of the connection to test (Required)
Flags:
--version Displays the program version string.
-h --help Displays help with available flag, subcommand, and positional value parameters.
-f --filter filter stream name by pattern (e.g. account_*)
--folder discover streams in a specific folder (for file connections)
--schema discover streams in a specific schema (for database connections)
Für Datenbankverbindungen werden die verfügbaren Tabellen und Ansichten aufgelistet. Bei Speicherverbindungen werden die nicht rekursiven Dateiobjekte aufgelistet, die sich im angegebenen Quellordner befinden. Für SaaS/API-Verbindungen werden alle verfügbaren Objekte aufgelistet, die für den Verbrauch vorhanden sind. Nachfolgend finden Sie einige Beispiele.
Datenbankverbindungen
$ sling conns discover CLICKHOUSE
6:57PM INF Found 68 streams:
- "default"."docker_logs"
- "default"."sling_docker_logs"
- "system"."aggregate_function_combinators"
- "system"."asynchronous_metric_log"
- "system"."asynchronous_metrics"
- "system"."build_options"
- "system"."clusters"
....
Wenn wir nach einem bestimmten Schema filtern wollen, können wir Folgendes tun:
$ sling conns discover CLICKHOUSE --schema default
8:29PM INF Found 2 streams:
- "default"."docker_logs"
- "default"."sling_docker_logs"
SaaS-Verbindungen
$ sling conns discover NOTION
6:58PM INF Found 4 streams:
- blocks
- databases
- pages
- users
Speicherverbindungen
$ sling conns discover AWS_S3
6:52PM INF Found 7 streams:
- s3://my-sling-bucket/logging/
- s3://my-sling-bucket/part.01.0001.csv
- s3://my-sling-bucket/sling/
- s3://my-sling-bucket/temp/
- s3://my-sling-bucket/test.fs.write/
- s3://my-sling-bucket/test/
- s3://my-sling-bucket/test_1000.csv
Wenn wir die Dateien in einem Unterordner sehen wollen, können wir das tun:
$ sling conns discover AWS_S3 --folder s3://my-sling-bucket/logging/
6:55PM INF Found 1 streams:
- s3://my-sling-bucket/logging/1/1.log.gz
EL-Aufgaben werden ausgeführt
Jetzt, da Ihre Verbindungen eingerichtet sind, können Sie einige Aufgaben zum Extrahieren und Laden ausführen! Wir behandeln dies ausführlich in einem separaten Beitrag, Sie können darüber [hier] lesen (https://docs.slingdata.io/sling-cli/running-tasks). Von der Befehlszeile aus können Sie auch sling run -e
ausführen, was eine Reihe von Beispielen ausgibt.
Fazit
Alles in allem erleichtert Sling CLI die Verwaltung und Interaktion mit verschiedenen Arten von Verbindungen von Ihrer Shell aus. Wenn Sie Fragen oder Anregungen haben, können Sie uns gerne hier kontaktieren. Schauen Sie sich außerdem unbedingt Sling Cloud an, einen Cloud-Dienst, der Ihre verschiedenen Anforderungen zum Extrahieren und Laden zu einem wettbewerbsfähigen Preismodell erfüllt.