Skip to main content

final class atoti_jdbc.JdbcLoad

The definition of a JDBC query.
Inferring data types:
Creating a table from the inferred data types:
Loading query results into the table:
Using a parametrized query:
The following SQLite database has a table with a MY_VALUE column typed as integer but with a string on row #3:
Atoti enforces strong typing for primitive data types so row #3 cannot be loaded successfully. The outcome of the load() operation depends on error_handling:
  • With "log" or "skip":
  • With "warn":
  • With "error":
    The content of the table after an invalid row occurred is undefined: some rows may or may not have been loaded. Use data_transaction() to keep the operation atomic:
See also: The other DataLoad implementations.

driver : Annotated[str | None, AfterValidator(_validate_driver)] = None

The Java class name of the driver to use. This defines Hibernate’s DRIVER option. Inferred from url if None.

error_handling : ErrorHandling = ‘fail’

How to handle rows that cannot be loaded.
  • "fail": raise an error on the first invalid row and interrupt the load.
  • "warn": skip invalid rows and raise a warning if any was found.
  • "log": skip invalid rows and log each of them.
  • "skip": skip invalid rows without logging. Health events are still dispatched for observability.

parameters : FrozenSequence[Constant] = ()

The query parameters, sometimes also called bind variables.

query : str

The query (usually SQL) to execute.

url : Annotated[str, AfterValidator(normalize_jdbc_url)]

The JDBC connection string of the database. The "jdbc" scheme is optional but the database specific scheme (such as "h2") is mandatory. For instance:
  • "h2:/home/user/database/file/path;USER=username;PASSWORD=passwd"
  • "postgresql://postgresql.db.server:5430/example?user=username&password=passwd"
More examples can be found here. This defines Hibernate’s URL option.