跳到主要内容

1 篇博文 含有标签「connection」

查看所有标签

· 阅读需 8 分钟
弗里茨·拉科

背景

Sling CLI 简介

Sling CLI 是一个命令行工具,它允许从/向数据库、存储平台和 SaaS 应用程序轻松高效地移动数据(提取和加载)。入门很简单,如果您安装了 Python 的 pip,您只需运行 pip install sling。或者,您可以 这里 为您的机器下载二进制文件。

连接凭据

为了使用 sling,我们必须首先配置连接凭据,Sling CLI 会在各个地方查找它们。如果您已经在使用 dbt 等其他工具,或者在环境变量中设置了连接 U RL,则这允许“即插即用”性质。但是,建议使用 Sling 的 env.yaml 文件,因为它可以提供更加一致和灵活的体验。

Sling 环境文件

第一次运行 sling 命令时,会在当前用户的主目录 (.sling) 中创建 ~/.sling 文件夹,该目录中又包含一个名为 env.yaml 的文件。 Sling 的 Env 文件的结构很简单,您将连接的凭据放在 connections 键下,如下所示:

connections:
marketing_pg:
url: 'postgres://...'
ssh_tunnel: 'ssh://...' # optional

# 或 dbt 配置文件样式
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]

# 全局变量,在运行时可用于所有连接(可选)
variables:
aws_access_key: '...'
aws_secret_key: '...'

请参阅 此处 了解所有接受的连接类型及其各自所需的数据点。

sling conns list 命令与 Sling Env 凭据一起使用时,SOURCE 列将显示为 sling env yaml

环境变量

如果你更喜欢使用环境变量,在你的 shell 环境中设置它们就足够了:

# 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'

sling conns list 命令与环境变量一起使用时,SOURCE 列将显示为 env variable

DBT 配置文件

dbt 是许多数据专业人员日常使用的另一种流行工具,支持现有的本地配置文件可以轻松交叉使用。 dbt 凭据的典型位置位于 ~/dbt/profiles.yml 文件中。有关详细信息,请参阅 此处

如果您拥有 dbt 凭据并使用 sling conns list 命令,SOURCE 列将显示为 dbt profiles yaml

conns 子命令

现在您已经设置了凭据,sling 提供了一个 conns 子命令来与连接进行交互。我们可以执行以下操作:listtestdiscover

$ 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.

列出连接

查看和列出我们环境中可用的所有连接很方便。我们可以简单地运行 sling conns list 命令。这是一个例子:

$ 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 |
+----------------------+------------------+-------------------+

测试连接

Sling CLI 工具还允许测试连接。一旦我们知道连接名称,我们就可以使用 sling conns test 命令:

$ 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.

这是一个实际的例子:

$ sling conns test MSSQL
6:42PM INF success!

发现连接流

这是另一个漂亮的子命令,它允许人们查看从特定连接读取哪些数据流可用于 slingsling conns discover 命令。

$ 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)

对于数据库连接,它将列出可用的表和视图。对于存储连接,它将列出位于指定源文件夹中的非递归文件对象。对于 SaaS/API 连接,它将列出所有可供消费的可用对象。下面是一些例子。

数据库连接

$ 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"
....

如果我们想过滤特定的 shema,我们可以这样做:

$ sling conns discover CLICKHOUSE --schema default
8:29PM INF Found 2 streams:
- "default"."docker_logs"
- "default"."sling_docker_logs"

SaaS 连接

$ sling conns discover NOTION
6:58PM INF Found 4 streams:
- blocks
- databases
- pages
- users

存储连接

$ 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

如果我们想查看子文件夹中的文件,我们可以这样做:

$ 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 任务

现在您的连接已设置好,您可以运行一些提取和加载任务了!我们在另一篇文章中对此进行了详细介绍,您可以在 此处 阅读相关内容。从命令行,您还可以运行 sling run -e,这将打印一堆示例。

结论

综合考虑,Sling CLI 使您可以轻松地从您的 shell 管理各种类型的连接并与之交互。如果您有任何问题或建议,请随时与我们联系 这里。此外,请务必查看 Sling Cloud,这是一项以具有竞争力的价格模式处理您的各种提取和加载需求的云服务。