Spec-Zone.ru › DuckDB

Appender

Appender — самый эффективный способ загрузки данных в DuckDB из C интерфейса, и рекомендуется для быстрой загрузки данных. Appender намного быстрее, чем использование подготовленных запросов или отдельных INSERT INTO заявлений.

Добавление выполняется в строчном формате. Для каждого столбца необходимо выполнить вызов duckdb_append_[type], после чего строка должна быть завершена вызовом duckdb_appender_end_row. После добавления всех строк следует использовать duckdb_appender_destroy, чтобы завершить appender и очистить полученную память.

Обратите внимание, что duckdb_appender_destroy всегда должен вызываться для полученного объекта appender, даже если функция возвращает DuckDBError.

Пример

duckdb_query(con, "CREATE TABLE people (id INTEGER, name VARCHAR)", NULL);

duckdb_appender appender;
if (duckdb_appender_create(con, NULL, "people", &appender) == DuckDBError) {
  // handle error
}
// append the first row (1, Mark)
duckdb_append_int32(appender, 1);
duckdb_append_varchar(appender, "Mark");
duckdb_appender_end_row(appender);

// append the second row (2, Hannes)
duckdb_append_int32(appender, 2);
duckdb_append_varchar(appender, "Hannes");
duckdb_appender_end_row(appender);

// finish appending and flush all the rows to the table
duckdb_appender_destroy(&appender);

Обзор API

duckdb_state duckdb_appender_create(duckdb_connection connection, const char *schema, const char *table, duckdb_appender *out_appender);
idx_t duckdb_appender_column_count(duckdb_appender appender);
duckdb_logical_type duckdb_appender_column_type(duckdb_appender appender, idx_t col_idx);
const char *duckdb_appender_error(duckdb_appender appender);
duckdb_state duckdb_appender_flush(duckdb_appender appender);
duckdb_state duckdb_appender_close(duckdb_appender appender);
duckdb_state duckdb_appender_destroy(duckdb_appender *appender);
duckdb_state duckdb_appender_begin_row(duckdb_appender appender);
duckdb_state duckdb_appender_end_row(duckdb_appender appender);
duckdb_state duckdb_append_default(duckdb_appender appender);
duckdb_state duckdb_append_bool(duckdb_appender appender, bool value);
duckdb_state duckdb_append_int8(duckdb_appender appender, int8_t value);
duckdb_state duckdb_append_int16(duckdb_appender appender, int16_t value);
duckdb_state duckdb_append_int32(duckdb_appender appender, int32_t value);
duckdb_state duckdb_append_int64(duckdb_appender appender, int64_t value);
duckdb_state duckdb_append_hugeint(duckdb_appender appender, duckdb_hugeint value);
duckdb_state duckdb_append_uint8(duckdb_appender appender, uint8_t value);
duckdb_state duckdb_append_uint16(duckdb_appender appender, uint16_t value);
duckdb_state duckdb_append_uint32(duckdb_appender appender, uint32_t value);
duckdb_state duckdb_append_uint64(duckdb_appender appender, uint64_t value);
duckdb_state duckdb_append_uhugeint(duckdb_appender appender, duckdb_uhugeint value);
duckdb_state duckdb_append_float(duckdb_appender appender, float value);
duckdb_state duckdb_append_double(duckdb_appender appender, double value);
duckdb_state duckdb_append_date(duckdb_appender appender, duckdb_date value);
duckdb_state duckdb_append_time(duckdb_appender appender, duckdb_time value);
duckdb_state duckdb_append_timestamp(duckdb_appender appender, duckdb_timestamp value);
duckdb_state duckdb_append_interval(duckdb_appender appender, duckdb_interval value);
duckdb_state duckdb_append_varchar(duckdb_appender appender, const char *val);
duckdb_state duckdb_append_varchar_length(duckdb_appender appender, const char *val, idx_t length);
duckdb_state duckdb_append_blob(duckdb_appender appender, const void *data, idx_t length);
duckdb_state duckdb_append_null(duckdb_appender appender);
duckdb_state duckdb_append_data_chunk(duckdb_appender appender, duckdb_data_chunk chunk);

duckdb_appender_create

Создаёт объект appender.

Обратите внимание, что объект необходимо уничтожить с помощью duckdb_appender_destroy.

Синтаксис
duckdb_state duckdb_appender_create(
  duckdb_connection connection,
  const char *schema,
  const char *table,
  duckdb_appender *out_appender
);
Параметры
  • connection: Контекст подключения для создания appender.
  • schema: Схема таблицы, в которую производится добавление, или nullptr для схемы по умолчанию.
  • table: Имя таблицы, в которую производится добавление.
  • out_appender: Результирующий объект appender.
Значение возврата

DuckDBSuccess при успехе или DuckDBError при ошибке.


duckdb_appender_column_count

Возвращает количество столбцов в таблице, связанной с appender.

Синтаксис
idx_t duckdb_appender_column_count(
  duckdb_appender appender
);
Параметры
  • appender: Appender, для получения количества столбцов.
Значение возврата

Количество столбцов в таблице.


duckdb_appender_column_type

Возвращает тип столбца по указанному индексу.

Примечание: Результирующий тип необходимо уничтожить с помощью duckdb_destroy_logical_type.

Синтаксис
duckdb_logical_type duckdb_appender_column_type(
  duckdb_appender appender,
  idx_t col_idx
);
Параметры
  • appender: Appender, для получения типа столбца.
  • col_idx: Индекс столбца, для получения его типа.
Значение возврата

duckdb_logical_type столбца.


duckdb_appender_error

Возвращает сообщение об ошибке, связанное с заданным appender. Если appender не содержит сообщения об ошибке, возвращается nullptr.

Сообщение об ошибке не нужно освобождать. Оно будет освобождено при вызове duckdb_appender_destroy.

Синтаксис
const char *duckdb_appender_error(
  duckdb_appender appender
);
Параметры
  • appender: Appender, для получения сообщения об ошибке.
Значение возврата

Сообщение об ошибке, или nullptr если его нет.


duckdb_appender_flush

Очищает appender в таблицу, принудительно очищая кеш appender. Если очистка данных приводит к нарушению ограничения или любой другой ошибке, все данные аннулируются, и функция возвращает DuckDBError. Больше невозможно добавлять значения. Вызовите duckdb_appender_error для получения сообщения об ошибке, а затем duckdb_appender_destroy для уничтожения недействительного appender.

Синтаксис
duckdb_state duckdb_appender_flush(
  duckdb_appender appender
);
Параметры
  • appender: Appender, который нужно очистить.
Значение возврата

DuckDBSuccess при успехе или DuckDBError при ошибке.


duckdb_appender_close

Закрывает appender, очищая все промежуточные состояния и закрывая его для дальнейшего добавления. Если очистка данных приводит к нарушению ограничения или любой другой ошибке, все данные аннулируются, и функция возвращает DuckDBError. Вызовите duckdb_appender_error для получения сообщения об ошибке, а затем duckdb_appender_destroy для уничтожения недействительного appender.

Синтаксис
duckdb_state duckdb_appender_close(
  duckdb_appender appender
);
Параметры
  • appender: Appender, который нужно очистить и закрыть.
Значение возврата

DuckDBSuccess при успехе или DuckDBError при ошибке.


duckdb_appender_destroy

Закрывает appender, очищая все промежуточные состояния в таблицу и уничтожая его. Уничтожив его, эта функция освобождает всю память, связанную с appender. Если очистка данных приводит к нарушению ограничения, все данные аннулируются, и функция возвращает DuckDBError. Из-за уничтожения appender, больше невозможно получить конкретное сообщение об ошибке с помощью duckdb_appender_error. Поэтому, вызовите duckdb_appender_close перед уничтожением appender, если вам нужны сведения о конкретной ошибке.

Синтаксис
duckdb_state duckdb_appender_destroy(
  duckdb_appender *appender
);
Параметры
  • appender: Appender, который нужно очистить, закрыть и уничтожить.
Значение возврата

DuckDBSuccess при успехе или DuckDBError при ошибке.


duckdb_appender_begin_row

Функция-nop, предоставляемая для обратной совместимости. Не делает ничего. Требуется только duckdb_appender_end_row.

Синтаксис
duckdb_state duckdb_appender_begin_row(
  duckdb_appender appender
);


duckdb_appender_end_row

Завершает текущую строку добавлений. После вызова end_row можно добавить следующую строку.

Синтаксис
duckdb_state duckdb_appender_end_row(
  duckdb_appender appender
);
Параметры
  • appender: Appender.
Значение возврата

DuckDBSuccess при успехе или DuckDBError при ошибке.


duckdb_append_default

Добавляет значение DEFAULT (NULL, если DEFAULT недоступен для столбца) в appender.

Синтаксис
duckdb_state duckdb_append_default(
  duckdb_appender appender
);


duckdb_append_bool

Добавляет значение bool в appender.

Синтаксис
duckdb_state duckdb_append_bool(
  duckdb_appender appender,
  bool value
);


duckdb_append_int8

Добавляет значение int8_t в appender.

Синтаксис
duckdb_state duckdb_append_int8(
  duckdb_appender appender,
  int8_t value
);


duckdb_append_int16

Добавляет значение int16_t в appender.

Синтаксис
duckdb_state duckdb_append_int16(
  duckdb_appender appender,
  int16_t value
);


duckdb_append_int32

Добавляет значение int32_t в appender.

Синтаксис
duckdb_state duckdb_append_int32(
  duckdb_appender appender,
  int32_t value
);


duckdb_append_int64

Добавляет значение int64_t в appender.

Синтаксис
duckdb_state duckdb_append_int64(
  duckdb_appender appender,
  int64_t value
);


duckdb_append_hugeint

Добавляет значение duckdb_hugeint в appender.

Синтаксис
duckdb_state duckdb_append_hugeint(
  duckdb_appender appender,
  duckdb_hugeint value
);


duckdb_append_uint8

Добавляет значение uint8_t в appender.

Синтаксис
duckdb_state duckdb_append_uint8(
  duckdb_appender appender,
  uint8_t value
);


duckdb_append_uint16

Добавляет значение uint16_t в appender.

Синтаксис
duckdb_state duckdb_append_uint16(
  duckdb_appender appender,
  uint16_t value
);


duckdb_append_uint32

Добавляет значение uint32_t в appender.

Синтаксис
duckdb_state duckdb_append_uint32(
  duckdb_appender appender,
  uint32_t value
);


duckdb_append_uint64

Добавляет значение uint64_t в appender.

Синтаксис
duckdb_state duckdb_append_uint64(
  duckdb_appender appender,
  uint64_t value
);


duckdb_append_uhugeint

Добавить значение duckdb_uhugeint в аппендер.

Синтаксис
duckdb_state duckdb_append_uhugeint(
  duckdb_appender appender,
  duckdb_uhugeint value
);


duckdb_append_float

Добавить значение типа float в аппендер.

Синтаксис
duckdb_state duckdb_append_float(
  duckdb_appender appender,
  float value
);


duckdb_append_double

Добавить значение типа double в аппендер.

Синтаксис
duckdb_state duckdb_append_double(
  duckdb_appender appender,
  double value
);


duckdb_append_date

Добавить значение duckdb_date в аппендер.

Синтаксис
duckdb_state duckdb_append_date(
  duckdb_appender appender,
  duckdb_date value
);


duckdb_append_time

Добавить значение duckdb_time в аппендер.

Синтаксис
duckdb_state duckdb_append_time(
  duckdb_appender appender,
  duckdb_time value
);


duckdb_append_timestamp

Добавить значение duckdb_timestamp в аппендер.

Синтаксис
duckdb_state duckdb_append_timestamp(
  duckdb_appender appender,
  duckdb_timestamp value
);


duckdb_append_interval

Добавить значение duckdb_interval в аппендер.

Синтаксис
duckdb_state duckdb_append_interval(
  duckdb_appender appender,
  duckdb_interval value
);


duckdb_append_varchar

Добавить значение varchar в аппендер.

Синтаксис
duckdb_state duckdb_append_varchar(
  duckdb_appender appender,
  const char *val
);


duckdb_append_varchar_length

Добавить значение varchar в аппендер.

Синтаксис
duckdb_state duckdb_append_varchar_length(
  duckdb_appender appender,
  const char *val,
  idx_t length
);


duckdb_append_blob

Добавить значение blob в аппендер.

Синтаксис
duckdb_state duckdb_append_blob(
  duckdb_appender appender,
  const void *data,
  idx_t length
);


duckdb_append_null

Добавить значение NULL в аппендер (любого типа).

Синтаксис
duckdb_state duckdb_append_null(
  duckdb_appender appender
);


duckdb_append_data_chunk

Добавляет предварительно заполненный фрагмент данных в указанный аппендер.

Типы фрагмента данных должны точно совпадать с типами таблицы, преобразования не выполняются. Если типы не совпадают или аппендер находится в недопустимом состоянии, возвращается DuckDBError. Если добавление прошло успешно, возвращается DuckDBSuccess.

Синтаксис
duckdb_state duckdb_append_data_chunk(
  duckdb_appender appender,
  duckdb_data_chunk chunk
);
Параметры
  • appender: Аппендер для добавления.
  • chunk: Фрагмент данных для добавления.
Возвращаемое значение

Состояние возврата.


© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/api/c/appender.html

Spec-Zone.ru

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