Lightweight ETL for Java

Scriptella runs SQL and other scripts against multiple data sources from one XML file. Open source. No visual designer, application server, or proprietary runtime.

copy-customers.etl.xml

<!DOCTYPE etl SYSTEM
  "http://scriptella.org/dtd/etl.dtd">
<etl>
  <connection id="source" url="jdbc:h2:./source"/>
  <connection id="target" url="jdbc:h2:./target"/>

  <query connection-id="source">
    SELECT id, name FROM customer
    <script connection-id="target">
      INSERT INTO customer VALUES (?id, ?name)
    </script>
  </query>
</etl>

SQL for the work. XML for the wiring.

Use SQL, or the language that fits each source, and let the XML file only connect them.

Multiple sources, one file

Work with JDBC, CSV, text, XML, LDAP, shell scripts, and other sources in the same ETL file.

Use your existing SQL

Run it directly, include files, bind query results as variables, and add expressions only where a transform needs them.

CLI, Ant, Maven, API

Run the same ETL file from the command line, Ant, Maven, or the Java API.

Typical uses

  • Cross-database migration and table copying
  • CSV, text, and XML import or export
  • Repeatable database schema initialization and upgrades
  • Parameterized execution of SQL and other scripts
  • A focused alternative to the Ant <sql> task

When to use Scriptella

Choose Scriptella when SQL does most of the work and you need lightweight, repeatable orchestration across databases, files, or other data sources. For a different primary job, a more specialized tool may fit better.

Choose When it fits best
Scriptella SQL-centric ETL, data migration, straightforward database initialization and schema upgrades, and coordinated script execution across multiple data sources, with minimal infrastructure.
Plain scripts Small, one-off tasks with simple control flow and no need for reusable ETL structure.
Dedicated schema migration tools Schema versioning and deployment history are the primary concern and need specialized migration lifecycle features.
Batch frameworks Complex batch workloads need chunk processing, persistent job state, restartability, retry policies, or deep application-framework integration.

Getting started

Scriptella 1.6

Scriptella 1.6 is now available. It adds direct SQL execution from the CLI and Java API, shared environment-variable configuration, and file-backed SQLite support while keeping Java 17 as the minimum runtime.

What is new in 1.6 · Download 1.6

Previous release: Scriptella 1.5 (September 8, 2026). Download 1.5.