A connector turns a database, a file drop or an API into tables in the lake. It is one record: credentials, the objects to read, and the schedule.
Open Connectors, then New connector. The name is for people, not for the system: it is what appears in the table tree, so name it after the source, not after the team that owns it.
The type decides which fields the form asks for.
| Type | Reads from | Typical use |
|---|---|---|
| Postgres | A Postgres database | Application databases |
| ClickHouse | A ClickHouse cluster | An existing warehouse |
| S3 / Blob | Object storage | Files dropped by another system |
| REST | An HTTP endpoint | SaaS APIs with a JSON response |
Credentials are stored encrypted and are never shown again after saving. Changing a password means editing the connector, not recreating it - the tables keep their identity and their history.
name: billing-postgres type: postgres host: billing.internal.example.com port: 5432 database: billing user: datamind_reader password: <secret> tables: - invoices - payments schedule: "0 3 * * *"
The user should be a read-only account. Datamind never writes to a source; a source account with
write access is a permission you are granting for no reason.
Warning
The first sync reads every row it can see. On a large table that is a long read against your production database - run it outside business hours, and start with a subset of the tables.
Test connection checks only that the host answers and the credentials work. It does not run a query, so a connector that tests green can still fail its first sync: that failure is a permission or a timeout on the source, and it is reported on the connector's own page.
:::card What happens at the first sync
The tables are created in the lake, every row is read, and the sync is recorded as a full load. The next sync is incremental, using the cursor column you chose - and if no cursor column exists, every sync is a full load, which is the setting to revisit first when a nightly job gets slow. :::
| Symptom | Likely cause |
|---|---|
authentication failed on test | The password was rotated at the source, or the reader account is locked |
| Test passes, sync fails | The reader can connect but cannot select the table |
| Sync succeeds, table is empty | The source table is empty, or a filter in the connector excludes everything |
| Tables appear, values look stale | The schedule has not run yet - check the last sync time on the connector |