# Scriptella
[](https://github.com/scriptella/scriptella-etl/stargazers)
[](https://github.com/scriptella/scriptella-etl/actions/workflows/ci.yml)
[](https://central.sonatype.com/artifact/org.scriptella/scriptella-core)
[](https://github.com/scriptella/scriptella-etl/releases/latest)
[](https://github.com/scriptella/scriptella-testcontainers/blob/main/docs/compatibility-results.md#2026-10-05--scriptella-16)
Scriptella is a lightweight, XML-driven ETL and database migration tool for
Java. Use SQL and scripting languages directly to move and transform data
without a proprietary transformation language or graphical designer.
## Why Scriptella?
* **SQL-first:** Work in the language best suited to each data source instead
of learning a proprietary transformation language.
* **Lightweight:** Run jobs from a single configuration file without a server
or graphical designer.
* **Automation-friendly:** Keep migrations and data jobs in version control and
run them locally, in build pipelines, or on a schedule.
## Project status
The latest release is **Scriptella 1.6** (Java 17 baseline).
Scriptella 1.6 is available from [GitHub Releases](https://github.com/scriptella/scriptella-etl/releases/tag/scriptella-parent-1.6)
and [Maven Central](https://central.sonatype.com/artifact/org.scriptella/scriptella-core).
See the [changelog](CHANGELOG.md) for the release details and compatibility
changes.
## Requirements
| Version | Java |
| --- | --- |
| **Scriptella 1.6** | Java **17** |
| **Scriptella 1.3 (Java 8 compatibility release)** | Java **8** |
## Getting Scriptella
### Binary distribution
Download a published release from [GitHub Releases](https://github.com/scriptella/scriptella-etl/releases)
or [https://scriptella.org/download.html](https://scriptella.org/download.html).
Unzip the binary distribution, change to the extracted directory, and run an
ETL file:
```bash
java -jar scriptella.jar path/to/file.etl.xml
```
Add JDBC drivers and other provider JARs with the connection `classpath`
attribute as needed. See the
[tutorial](https://scriptella.org/tutorial.html) and
[reference](https://scriptella.org/reference/).
### Experimental curl installer
Install the latest stable release with `curl`:
```bash
curl -fsSL https://scriptella.org/install.sh | sh
```
The installer places Scriptella under `${HOME}/.local/scriptella`. It either
adds `${HOME}/.local/scriptella/bin` to an existing startup file or prints the
exact PATH command to add manually. The guaranteed command is the packaged
`scriptella.sh` launcher:
```bash
scriptella.sh path/to/file.etl.xml
```
The installer does not install Java; Scriptella requires Java 17 or newer.
When the installer updates a startup file, start a new shell or reload that
file before using `scriptella.sh`. Manual ZIP installation and
`java -jar scriptella.jar` remain available above.
### Direct SQL execution
Scriptella 1.6 runs a SQL file directly against a JDBC connection without ETL XML:
```bash
scriptella.sh execute-sql --url jdbc:postgresql://localhost/app --user app schema.sql
```
See the [direct SQL guide](docs/cli-usage.md#10-direct-sql-execution)
for driver setup, properties, literal mode, and CLI options. For embedded execution,
see [Executing Scriptella from Java](docs/java-execution.md).
### Quick start
Create `people.csv` next to `scriptella.jar`:
```csv
id,name
1,Ada
2,Grace
```
Then create `csv-to-sql.etl.xml` in the same directory:
```xml
```
The flow is source row to nested action:
1. `` asks the CSV connection for rows. The CSV
driver treats the first line as headers and emits one row for each remaining
line.
2. The nested `