Skip to content

Запись в MySQL с использованием DBWriter

Для записи данных в MySQL используйте DBWriter.

Warning

Пожалуйста, учитывайте типы данных MySQL

Warning

Всегда рекомендуется создавать таблицу явно с помощью MySQL.execute вместо того, чтобы полагаться на автоматическую генерацию DDL в Spark.

Это связано с тем, что генератор DDL в Spark может создавать колонки с другой точностью и типами данных, чем ожидается, что приводит к потере точности или другим проблемам.

Примеры

```python
    from onetl.connection import MySQL
    from onetl.db import DBWriter

    mysql = MySQL(...)

    df = ...  # здесь данные

    writer = DBWriter(
        connection=mysql,
        target="schema.table",
        options=MySQL.WriteOptions(
            if_exists="append",
            # ENGINE обязателен для MySQL
            createTableOptions="ENGINE = MergeTree() ORDER BY id",
        ),
    )

    writer.run(df)   
```

Опции

Метод выше принимает MySQL.WriteOptions

onetl.connection.db_connection.mysql.options.MySQLWriteOptions

Bases: JDBCWriteOptions

Source code in onetl/connection/db_connection/mysql/options.py
20
21
class MySQLWriteOptions(JDBCWriteOptions):
    __doc__ = JDBCWriteOptions.__doc__.replace("SomeDB", "MySQL")  # type: ignore[assignment, union-attr]

__doc__ = JDBCWriteOptions.__doc__.replace('SomeDB', 'MySQL') class-attribute instance-attribute