Database syncer
The database syncer connects to an external database and syncs user data into Casdoor. A demo users table can be imported from the template XLSX.

Create a syncer
Go to Syncers and create a new syncer with the following. Save when done.

consejo
Fill at least ID and Name in the Casdoor column mapping. Other useful fields include createdTime, Password, and DisplayName.
Required fields
| Field | Description |
|---|---|
| Organization | Organization to import users into. |
| Name | Syncer name. |
| Type | database. |
| Host, Port, User, Password | Source database connection. |
| Database type | MySQL, PostgreSQL, SQL Server, Oracle, or SQLite (Xorm-supported). |
| Base de datos | Source database name. |
| Table | Source user table name. |
| Columnas de la tabla | Column name (source), Column type (source), Casdoor Column (Casdoor user field). |
Optional fields
| Field | Description |
|---|---|
| Is hashed | If enabled, sync runs only when fields included in the hash change; other field-only changes do not trigger sync. |
| Is key | Marks the primary key used to match source and Casdoor users. At least one column must be key; if none is set, the first is used. |
| Avatar base URL | If set and source user.avatar does not start with http, Casdoor stores Avatar base URL + user.avatar. |
| Affiliation table | Table used to sync user affiliation. Int codes can be mapped to names; see getAffiliationMap() and syncer_util (e.g. score for int→string mapping). |
Enable Is enable and save; the syncer will run. You can also trigger a sync with the Sync button.

Actualizar
With Table columns configured for key mapping, differences on the key between source and Casdoor trigger updates:
- Update in source table — changes sync to Casdoor.
- Update in Casdoor — changes sync back to source.
Añadir
When row counts differ, the syncer adds rows to the table with fewer rows, using the key to match:
- Add user in source table:
- Add user in Casdoor table: