INSERT INTO
Важно
Поддерживается только для строковых таблиц. Поддержка функциональности для колоночных таблиц находится в разработке.
Доступные способы загрузки данных в колоночные таблицы:
Добавляет строки в строковую таблицу. При попытке вставить в таблицу строку с уже существующим значением первичного ключа операция завершится ошибкой с кодом PRECONDITION_FAILED
и текстом Operation aborted due to constraint violation: insert_pk
.
INSERT INTO
позволяет выполнять следующие операции:
-
Добавление константных значений с помощью
VALUES
.INSERT INTO my_table (Key1, Key2, Value1, Value2) VALUES (345987,'ydb', 'Яблочный край', 1414); COMMIT;
INSERT INTO my_table (key, value) VALUES ("foo", 1), ("bar", 2);
-
Сохранение результата выборки
SELECT
.INSERT INTO my_table SELECT Key AS Key1, "Empty" AS Key2, Value AS Value1 FROM my_table1;
При работе с внешними файловыми источниками данных можно дополнительно указывать ряд параметров:
FORMAT
- формат хранимых данных в файловых хранилищах в федеративных запросах. Допустимые значения:csv_with_names
,tsv_with_names
,json_list
,json_each_row
,json_as_string
,parquet
,raw
.COMPRESSION
- формат сжатия файлов в файловых хранилищах в федеративных запросах. Допустимые значения: gzip, zstd, lz4, brotli, bzip2, xz.PARTITIONED_BY
- список колонок партиционирования данных в файловых хранилищах в федеративных запросах. Содержит список колонок в порядке их размещения в файловом хранилище.projection.enabled
- флаг включения расширенного партиционирования данных. Допустимые значения:true
,false
.projection.<field_name>.type
- тип поля расширенного партиционирования данных. Допустимые значения:integer
,enum
,date
.projection.<field_name>.<options>
- расширенные свойства поля расширенного партиционирования данных.
Пример
INSERT INTO `connection`.`test/`
WITH
(
FORMAT = "csv_with_names"
)
SELECT
"value" AS value, "name" AS name
Где:
connection
— название соединения с S3 (Yandex Object Storage).test/
— путь внутри бакета, куда будут записаны данные. При записи создаются файлы со случайными именами.