Spec-Zone.ru › Kotlin 2

Подключение к базам данных и получение данных

Библиотека Kotlin DataFrame поддерживает наиболее распространённые базы данных SQL:

  • DuckDB

  • H2

  • MariaDB

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • SQLite

Посмотрите примеры использования Kotlin DataFrame с SQL на GitHub.

Перед началом

Начиная с IntelliJ IDEA 2026.2, Kotlin Notebook больше не будет входить в комплект поставки IDE и официально поддерживаться JetBrains. Исходный код останется доступен на GitHub.

Подробнее см. в публикации в блоге.

Чтобы выполнить инструкции этого руководства:

  1. Выберите File | New | Kotlin Notebook.

  2. Добавьте зависимость от драйвера Java Database Connectivity (JDBC) для вашей базы данных в первую ячейку блокнота.

    Например, чтобы подключиться к базе данных MariaDB, добавьте:

    USE {
       dependencies("org.mariadb.jdbc:mariadb-java-client:$version")
    }
    
  3. Импортируйте Kotlin DataFrame:

    %use dataframe
    

    Запустите ячейку с кодом, содержащую строку %use dataframe, прежде чем запускать другие ячейки с кодом, чтобы библиотека DataFrame и её API стали доступны в блокноте.

Для работы с руководством можно также добавить DataFrame в качестве зависимости Gradle или Maven.

Подключение к базе данных

Чтобы подключиться к базе данных, создайте конфигурацию подключения с помощью функции DbConnectionConfig():

  1. Импортируйте следующие функции:

    import org.jetbrains.kotlinx.dataframe.io.DbConnectionConfig
    import org.jetbrains.kotlinx.dataframe.schema.DataFrameSchema
    
  2. Укажите параметры подключения (URL, имя пользователя, пароль) с помощью функции DbConnectionConfig():

    val URL = "YOUR_URL"
    val USER_NAME = "YOUR_USERNAME"
    val PASSWORD = "YOUR_PASSWORD"
    
    val dbConfig = DbConnectionConfig(URL, USER_NAME, PASSWORD)
    

Дополнительные сведения о подключении к базам данных SQL см. в разделе Чтение данных из баз SQL в документации Kotlin DataFrame.

Изучение схемы базы данных

Перед загрузкой данных изучите схемы базы данных, чтобы узнать, какие таблицы в ней есть и какие столбцы они содержат. Используйте схемы, чтобы выбрать таблицу для загрузки в DataFrame.

Чтобы получить схемы всех созданных пользователями таблиц в базе данных, используйте функцию DataFrameSchema.readAllSqlTables():

val dataSchemas = DataFrameSchema.readAllSqlTables(dbConfig)

dataSchemas.forEach { (tableName, schema) ->
    println("---Schema for table: $tableName---")
    println(schema)
    println()
}

Загрузка данных

Изучив схемы базы данных и выбрав нужные данные, загрузите их в DataFrame.

Kotlin DataFrame предлагает два способа загрузки данных из базы данных:

  • Загрузить данные непосредственно из таблицы.

  • Загрузить результат пользовательского SQL-запроса.

Оба способа возвращают DataFrame, который можно изучать, преобразовывать и анализировать.

Загрузка данных из таблицы

Чтобы загрузить данные из таблицы, используйте функцию DataFrame.readSqlTable().

В следующем примере загружаются первые 100 строк из таблицы movies:

val moviesDf = DataFrame.readSqlTable(
    dbConfig = dbConfig,
    tableName = "movies",
    limit = 100
)

moviesDf

Загрузка данных с помощью SQL-запроса

Чтобы выполнить конкретный SQL-запрос к базе данных, используйте функцию DataFrame.readSqlQuery(). Этот способ удобен, когда нужно загрузить определённые столбцы, объединить таблицы, отфильтровать строки или агрегировать данные в базе данных.

Получим набор данных о фильмах режиссёра Квентина Тарантино. Этот запрос выбирает сведения о фильмах и объединяет жанры для каждого фильма:

val TARANTINO_FILMS_SQL_QUERY = """
    SELECT name, year, rank, GROUP_CONCAT(genre) as "genres"
    FROM movies JOIN movies_directors ON movie_id = movies.id
    JOIN directors ON directors.id=director_id LEFT JOIN movies_genres ON movies.id = movies_genres.movie_id
    WHERE directors.first_name = "Quentin" AND directors.last_name = "Tarantino"
    GROUP BY name, year, rank
    ORDER BY year
    """

val tarantinoMoviesDf = DataFrame.readSqlQuery(dbConfig, TARANTINO_FILMS_SQL_QUERY)

tarantinoMoviesDf

Обработка данных

Загрузив данные из базы данных в DataFrame, вы можете обрабатывать их с помощью операций DataFrame.

Например, обработаем данные из предыдущего раздела. Следующий код:

  1. Заменяет отсутствующие значения в столбце year с помощью функции .fillNA().

  2. Преобразует столбец в Int с помощью функции .convert().

  3. Оставляет только фильмы, выпущенные после 2000 года, с помощью функции .filter().

val filteredTarantinoMovies = tarantinoMoviesDf
    .fillNA { year }.with { 0 }
    .convert { year }.toInt()
    .filter { year > 2000 }

filteredTarantinoMovies

Анализ данных

Используйте библиотеку DataFrame, чтобы группировать, сортировать и агрегировать данные, выявляя и изучая закономерности.

Например, прочитаем данные об актёрах из таблицы actors и найдём 20 самых распространённых имён:

// Extract data from the actors table
val actorDf = DataFrame.readSqlTable(dbConfig, "actors", 10000)
val top20ActorNames = actorDf
   // Groups the data by the first_name column
   .groupBy { first_name }
   
   // Counts the occurrences of each unique first name
   .count()
   
    // Sorts the results in descending order of count
   .sortByDesc("count")
    
   // Selects the top 20 most frequent names for analysis.
   .take(20)

Что дальше

  • Изучите визуализацию данных с помощью библиотеки Kandy

  • Дополнительные сведения о визуализации данных см. в разделе Визуализация данных с помощью Kandy

  • Подробный обзор инструментов и ресурсов для работы с данными и их анализа в Kotlin см. в разделе Библиотеки Kotlin и Java для анализа данных

29 июня 2026 г.
Получение данных из веб-источников и APIВизуализация данных с помощью Kandy

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/data-analysis-connect-to-db.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API