# StarRocks

## Setup

The following credentials keys are accepted:

* `host` **(required)** -> The hostname / ip of the instance
* `user` **(required)** -> The username to access the instance
* `database` **(required)** -> The database name of the instance
* `fe_url` (recommended) -> The front end URL for Stream Loading (Recommended). See [here](https://docs.starrocks.io/docs/sql-reference/sql-statements/data-manipulation/STREAM_LOAD/) for more details. Example: `http://<fe_host>:<fe_http_port>`. User / Password are auto applied if already provided, or feel free to provide them again in the `fe_url`.
* `schema` (optional) -> The default schema to use
* `password` (optional) -> The password to access the instance
* `port` (optional) -> The port of the instance. Default is `9030`.
* `ssh_tunnel` (optional) -> The URL of the SSH server you would like to use as a tunnel (example `ssh://user:password@db.host:22`)
* `ssh_private_key` (optional) -> The private key to use to access a SSH server (raw string or path to file).
* `ssh_passphrase` (optional) -> The passphrase to use to access a SSH server.

### Stream Load Params

* `file_max_bytes` (optional) -> The maximum file bytes size for stream loading chunking (via `fe_url`).
* `max_filter_ratio` (optional *since v1.2.4*) -> The error tolerance for steam load. ([details](https://docs.starrocks.io/docs/sql-reference/sql-statements/data-manipulation/STREAM_LOAD/#set-strict-mode-and-time-zone))
* `timezone` (optional *since v1.2.4*) -> The timezone for steam load. ([details](https://docs.starrocks.io/docs/sql-reference/sql-statements/data-manipulation/STREAM_LOAD/#set-strict-mode-and-time-zone))
* `strict_mode` (optional *since v1.2.4*) -> strict mode for steam load. ([details](https://docs.starrocks.io/docs/sql-reference/sql-statements/data-manipulation/STREAM_LOAD/#set-strict-mode-and-time-zone))
* `timeout` (optional *since v1.2.4*) -> The timeout for stream load per file (default: `300`)

### Using `sling conns`

Here are examples of setting a connection named `STARROCKS`. We must provide the `type=starrocks` property:

{% code overflow="wrap" %}

```bash
$ sling conns set STARROCKS type=starrocks host=<host> user=<user> database=<database> password=<password> port=<port> 

# OR use url
$ sling conns set STARROCKS url="starrocks://myuser:mypass@host.ip:9030/mydatabase"
```

{% endcode %}

### Environment Variable

See [here](https://docs.slingdata.io/sling-cli/environment#dot-env-file-.env.sling) to learn more about the `.env.sling` file.

{% code overflow="wrap" %}

```bash
export STARROCKS='starrocks://myuser:mypass@host.ip:9030/mydatabase'

export STARROCKS='{ type: starrocks, url: "starrocks://myuser:mypass@host.ip:9030/mydatabase", fe_url: "http://host.ip:8030" }'
```

{% endcode %}

### Sling Env File YAML

See [here](https://docs.slingdata.io/sling-cli/environment#sling-env-file-env.yaml) to learn more about the sling `env.yaml` file.

```yaml
connections:
  STARROCKS:
    type: starrocks
    host: <host>
    user: <user>
    port: <port>
    database: <database>
    schema: <schema>
    password: <password>
    strict_mode: true
    fe_url: http://<fe_host>:<fe_http_port>

  STARROCKS_URL:
    fe_url: http://host.ip:8030
    strict_mode: true
    url: "starrocks://myuser:mypass@host.ip:9030/mydatabase"
```

If you are facing issues connecting, please reach out to us at <support@slingdata.io>, on [discord](https://discord.gg/q5xtaSNDvp) or open a Github Issue [here](https://github.com/slingdata-io/sling-cli/issues).
