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]].