A load put together in Invantive Data Loader is stored as a file with the extension `.idl`. The file holds the whole definition: source, target, mapping and options, so a load can be kept in version control and moved between devices.
## Running a Load
An `.idl` file is run by Invantive Data Loader itself. It cannot be run from [[Invantive Query Tool/Invantive Query Tool|Invantive Query Tool]] or from [[Invantive Data Hub/Invantive Data Hub|Invantive Data Hub]], and there is no command which executes one from a script. That is a deliberate limitation rather than an omission which will be filled in later.
## Unattended Loading
Where a load has to run on a schedule, express it as statements rather than as an `.idl` file and run those with Invantive Data Hub. The three statements which cover nearly every load are:
```sql
bulk insert into <target table>
select …
from <source table>
```
`create or replace table` for a target which is rebuilt each run, and `synchronize` for a target which has to be brought into step while keeping what already matches.
Most users who load on a schedule write the load this way from the start, and use Data Loader for the loads which are performed by hand.
## Choosing Between the Two
Invantive Data Loader earns its place where the load is put together by someone who does not write SQL, or where a load is run once and then abandoned. A load which runs every night belongs in a statement, because a statement can be read in a review, kept in version control with a meaningful difference between versions, and driven from a scheduler; see [[Invantive Data Hub/Command Line Arguments|Command Line Arguments]].