Microsoft Access Queries

Microsoft Access Queries

Certified

Execute multiple SQL statements against a Microsoft Access database

Executes multiple SQL statements sequentially against a Microsoft Access database (.mdb or .accdb), optionally within a single transaction.

The database can be:

  • reused from a previous task via accessFile,
  • referenced directly through the JDBC URL,
  • or created and persisted when outputDbFile is enabled.

When outputDbFile is set to true, the database used during execution is uploaded to Kestra internal storage and exposed as outputs.<taskId>.databaseUri, enabling database reuse across tasks.

yaml
type: io.kestra.plugin.jdbc.access.Queries

Execute multiple queries using an existing Access file and pass the results to another task.

yaml
id: access_queries
namespace: company.team

tasks:
  - id: init_db
    type: io.kestra.plugin.jdbc.access.Queries
    url: jdbc:ucanaccess:///myfile.accdb
    outputDbFile: true
    sql: |
      CREATE TABLE IF NOT EXISTS products (
        product_id INTEGER,
        product_name TEXT
      );
      INSERT INTO products (product_id, product_name) VALUES (1, 'Widget');
    fetchType: NONE

  - id: select
    type: io.kestra.plugin.jdbc.access.Queries
    url: jdbc:ucanaccess:///myfile.accdb
    accessFile: "{{ outputs.init_db.databaseUri }}"
    sql: SELECT * FROM products
    fetchType: FETCH
Properties

SQL statement(s) to execute

Runs one or more SQL statements rendered with flow variables. Query tasks accept a single statement; Queries tasks can execute multiple statements separated by semicolons

Access database file (optional)

Optional URI to an existing Access database file stored in Kestra internal storage.

When provided, the file is downloaded into the task working directory and used as the Access database for the query execution.

SQL to execute after main query in same transaction

Optional SQL executed in the same transaction after the main statement. Useful for marking rows as processed to avoid duplicates; only a single statement is allowed. Commit covers both sql and afterSQL

Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.

Definitions
assetFailureBehaviorstring
Possible Values
IGNOREFAILWARN

Asset failure behavior

Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.

enableAutobooleanstring

Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.

inputsarray

The assets consumed as inputs.

id*string
Min length1
typestring
outputs

The assets produced as outputs.

id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*string
Min length1

Custom asset type

descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
Defaultfalse

Compute per-column statistics of the fetched rows

When true, writes an ION file with one entry per column (column, jdbcType, nulls, distinct (approximate), min, max, mean, median, minLen, maxLen) and exposes its URI in the columnStats output. Statistics are computed while the rows are read, without running a second query. Only applies to fetchType FETCH and STORE; LOB, binary and array columns are skipped. min and max are omitted for string columns longer than 256 characters, and median is computed on a bounded sample of the values

Default100000

Number of rows used to compute column statistics

Only used when columnStats is true. Statistics stop at this many rows while all rows are still fetched or stored. Must be at least 1. Default: 100,000

Default10000

Number of rows to fetch per database round trip

Controls JDBC fetch size for STORE mode. Default: 10,000 rows; use Integer.MIN_VALUE for MySQL streaming. Ignored for FETCH and FETCH_ONE

DefaultNONE
Possible Values
STOREFETCHFETCH_ONENONE

Result fetching mode

FETCH returns all rows, FETCH_ONE returns the first row only, STORE streams rows to internal storage (ION), NONE returns no data. Default: NONE

DefaultV2003
Possible Values
V2000V2003V2007V2010V2016

Access database version to use when creating a new database file

Specifies the Microsoft Access file format used when UCanAccess creates a new database. Only applies when the target database file does not already exist. See https://spannm.github.io/ucanaccess/20-getting-started.html for details.

Defaultfalse

Output the Access database file

When set to true, the Access database file used during execution is uploaded to Kestra internal storage and exposed as outputs.<taskId>.databaseUri.

SubTypestring

Output file names to capture after SQL execution

Creates named temporary files in the task working directory before the SQL runs, making their absolute paths available as {{ outputFiles.name }} Pebble variables in the SQL template. Only supported by embedded, in-process drivers (DuckDB, SQLite) where the database engine writes to the same filesystem as the Kestra worker. Remote database drivers (Postgres, MySQL, etc.) do not support this — they execute SQL on a separate server that cannot write to the Kestra worker filesystem.

Defaultfalse

Expose the executed SQL statement in the outputs

When true, the rendered SQL is exposed in the statement output, with the values of the secret() calls used in sql replaced by *** and truncated to 64 KiB. Disabled by default so that SQL text never leaks into outputs unless requested

Named parameter bindings for SQL query

Map of parameter names to values, bound to : name placeholders as prepared-statement parameters; supports nulls and typed values. Colons in literals, quoted identifiers, comments and :: casts are left as is; a : name missing from this map is bound to NULL with a warning.

The database user's password

The time zone id to use for date/time manipulation. Default value is the worker's default time zone id

Defaulttrue

Transaction

If one query failed, rollback transactions.

Defaultjdbc:ucanaccess:///

The JDBC URL to connect to the database

Example: jdbc: ucanaccess:///path/to/mydb.accdb

The database user

SubTypeinteger

The number of affected rows for each query that doesn't return a result set

One entry per INSERT, UPDATE, DELETE or DDL statement, in execution order, as reported by the JDBC driver (DDL statements usually report 0). Queries returning a result set are not included here; their results are in outputs.

Total size of the stored result files in bytes

Only populated when fetchType is STORE

Formaturi

URI of the column statistics file in internal storage

Only populated when columnStats is true and fetchType is FETCH or STORE; columns of all result sets are merged by name

Total execution duration in milliseconds

Includes reading the result rows of every statement

The list of per-query outputs

Definitions
bytesinteger

Size of the stored result file in bytes

Only populated when fetchType is STORE

columnStatsstring
Formaturi

URI of the column statistics file in internal storage

Only populated when columnStats is true and fetchType is FETCH or STORE; file is stored in ION format

durationMsinteger

Statement execution duration in milliseconds

Includes reading the result rows

rowobject

First row of fetched data

Only populated when fetchType is FETCH_ONE

rowsarray
SubTypeobject

List of all fetched rows

Only populated when fetchType is FETCH

rowsAffectedinteger

Number of rows affected by the statement

Reported by the JDBC driver for INSERT, UPDATE, DELETE and similar statements. Not set when the statement returns a result set or when the driver does not report a count

sizeinteger

Number of rows fetched

Only populated when fetchType is FETCH or STORE

statementstring

Executed SQL statement

Only populated when outputStatement is true. Values of secret() calls are replaced by *** and the text is truncated to 64 KiB

tablesarray

Tables read or written by the statement

Detected from the SQL text, so this is a best effort: CTEs, temporary tables and dialect specific syntax can lower the confidence or be missed. Limited to 50 entries, see tablesTruncated

accessstring
Possible Values
READWRITECREATEDROP

How the statement uses the table

One of READ, WRITE, CREATE or DROP.

confidencestring
Possible Values
MEDIUMLOW

How reliable the detection is

MEDIUM when detected from the SQL text, LOW for temporary tables and ambiguous names.

databasestring

Database name

Null when the statement does not qualify the table with a database.

kindstring
Possible Values
TABLEFILEURL

Kind of source

Only set on DuckDB: TABLE, FILE or URL (files read through read_parquet, read_csv, ATTACH and quoted paths).

namestring

Table name

For DuckDB file reads, the file path or URL.

schemastring

Schema name

Null when the statement does not qualify the table with a schema.

tablesTruncatedboolean

Whether the tables list was cut at 50 entries

uristring
Formaturi

URI of stored results in internal storage

Only populated when fetchType is STORE; file is stored in internal storage using ION format

warningsinteger

Number of SQL warnings raised by the statement

Count of the SQLWarning chain reported by the driver, for example Postgres notices

Total number of rows affected by all statements

Sum of affectedRows. Not set when no statement reported an update count

Executed SQL statements

Only populated when outputStatement is true. Values of secret() calls are replaced by *** and the text is truncated to 64 KiB

Number of executed statements

When the driver runs the whole script in a single batch (transactional Snowflake, Redshift and Sybase scripts), the script counts as one statement

Formaturi

URI of the per-statement details file in internal storage

ION file with one {index, kind, rowsAffected, durationMs} entry per executed statement

Tables read or written by the statements

Detected from the SQL text, so this is a best effort: CTEs, temporary tables and dialect specific syntax can lower the confidence or be missed. Limited to 50 entries, see tablesTruncated

Definitions
accessstring
Possible Values
READWRITECREATEDROP

How the statement uses the table

One of READ, WRITE, CREATE or DROP.

confidencestring
Possible Values
MEDIUMLOW

How reliable the detection is

MEDIUM when detected from the SQL text, LOW for temporary tables and ambiguous names.

databasestring

Database name

Null when the statement does not qualify the table with a database.

kindstring
Possible Values
TABLEFILEURL

Kind of source

Only set on DuckDB: TABLE, FILE or URL (files read through read_parquet, read_csv, ATTACH and quoted paths).

namestring

Table name

For DuckDB file reads, the file path or URL.

schemastring

Schema name

Null when the statement does not qualify the table with a schema.

Whether the tables list was cut at 50 entries

Number of SQL warnings raised by the statements

Count of the SQLWarning chains reported by the driver across all statements

Unitbytes

The size of the stored result file.

The duration of the SQL execution, including reading the result rows.

Unitrows

The number of fetched rows.

Unitrows

The number of rows affected, as reported by the JDBC driver.