Teradata connection#

class onetl.connection.db_connection.teradata.connection.Teradata(*, spark: SparkSession, user: str, password: SecretStr, host: Host, port: int = 1025, database: str | None = None, extra: TeradataExtra = TeradataExtra(CHARSET='UTF8', COLUMN_NAME='ON', FLATTEN='ON', MAYBENULL='ON', STRICT_NAMES='OFF'))#

Teradata JDBC connection. support_hooks

Based on package com.teradata.jdbc:terajdbc:17.20.00.15 (official Teradata JDBC driver).

Warning

Before using this connector please take into account Prerequisites

Parameters:
hoststr

Host of Teradata database. For example: test.teradata.domain.com or 193.168.1.12

portint, default: 1025

Port of Teradata database

userstr

User, which have proper access to the database. For example: some_user

passwordstr

Password for database connection

databasestr, optional

Database in RDBMS, NOT schema.

See this page for more details

sparkpyspark.sql.SparkSession

Spark session.

extradict, default: None

Specifies one or more extra parameters which should be appended to a connection string.

For example: {"TMODE": "TERA", "MAYBENULL": "ON", "CHARSET": "UTF8", "LOGMECH":"LDAP"}

See Teradata JDBC driver documentation for more details

Note

By default, these options are added to extra:

  • CHARSET = "UTF8"

  • COLUMN_NAME = "ON" - allow reading column title from a table

  • FLATTEN = "ON" - improves error messages

  • MAYBENULL = "ON"

  • STRICT_NAMES = "OFF" - ignore Spark options passed to JDBC URL

It is possible to override default values, for example set extra={"FLATTEN": "OFF"}

Examples

Teradata connection with LDAP auth:

from onetl.connection import Teradata
from pyspark.sql import SparkSession

# Create Spark session with Teradata driver loaded
maven_packages = Teradata.get_packages()
spark = (
    SparkSession.builder.appName("spark-app-name")
    .config("spark.jars.packages", ",".join(maven_packages))
    .getOrCreate()
)

# Create connection
teradata = Teradata(
    host="database.host.or.ip",
    user="user",
    password="*****",
    extra={
        "TMODE": "TERA",  # "TERA" or "ANSI"
        "LOGMECH": "LDAP",
        "LOG": "TIMING",  # increase log level
    },
    spark=spark,
)
check()#

Check source availability. support_hooks

If not, an exception will be raised.

Returns:
Connection itself
Raises:
RuntimeError

If the connection is not available

Examples

connection.check()
classmethod get_packages() list[str]#

Get package names to be downloaded by Spark. support_hooks

Examples

from onetl.connection import Teradata

Teradata.get_packages()