INSERT INTO
Добавляет строки в таблицу. Если целевая таблица уже существует и не является сортированной, операция INSERT INTO
дописывает строки в конец таблицы. В случае сортированной таблицы YQL пытается сохранить сортированность путём запуска сортированного слияния.
Таблица ищется по имени в базе данных, заданной оператором USE.
Описание
INSERT INTO
позволяет выполнять следующие операции:
-
Добавлять константные значения с помощью
VALUES
.INSERT INTO my_table (Column1, Column2, Column3, Column4) VALUES (345987,'ydb', 'Яблочный край', 1414); COMMIT;
INSERT INTO my_table (Column1, Column2) VALUES ("foo", 1), ("bar", 2);
-
Сохранять результаты выборки
SELECT
.INSERT INTO my_table SELECT SourceTableColumn1 AS MyTableColumn1, "Empty" AS MyTableColumn2, SourceTableColumn2 AS MyTableColumn3 FROM source_table;
Использование модификаторов
Запись может выполняться с одним или несколькими модификаторами. Модификатор указывается после ключевого слова WITH
после имени таблицы: INSERT INTO ... WITH SOME_HINT
. Например, чтобы перед записью очистить таблицу от имевшихся данных, достаточно добавить модификатор WITH TRUNCATE
:
INSERT INTO my_table WITH TRUNCATE
SELECT key FROM my_table_source;
Действуют следующие правила:
- Если у модификатора есть значение, то оно указывается после знака
=
:INSERT INTO ... WITH SOME_HINT=value
. - Если необходимо указать несколько модификаторов, то они заключаются в круглые скобки:
INSERT INTO ... WITH (SOME_HINT1=value, SOME_HINT2, SOME_HINT3=value)
.
Полный список поддерживаемых модификаторов записи:
TRUNCATE
— очистить таблицу от имеющихся данных.COMPRESSION_CODEC=codec_name
— записать данные с указанным compression codec. Имеет приоритет над прагмойyt.PublishedCompressionCodec
. Допустимые значения смотрите в разделе Сжатие.ERASURE_CODEC=erasure_name
— записать данные с указанным erasure codec. Имеет приоритет над прагмойyt.PublishedErasureCodec
. Допустимые значения смотрите в разделе Репликация.EXPIRATION=value
— задать expiration период для создаваемой таблицы. Значение может задаваться какduration
или какtimestamp
в формате ISO 8601. Имеет приоритет над прагмамиyt.ExpirationDeadline
/yt.ExpirationInterval
. Данный модификатор может задаваться только совместно сTRUNCATE
.REPLICATION_FACTOR=factor
— задать replication factor для создаваемой таблицы. Значением должно быть число в диапазоне [1, 10].USER_ATTRS=yson
— задать пользовательские атрибуты, которые будут добавлены к таблице. Атрибуты должны задаваться в виде yson-словаря.MEDIA=yson
— указать медиумы. Имеет приоритет над прагмойyt.PublishedMedia
. Допустимые значения смотрите в разделе МедиумыPRIMARY_MEDIUM=medium_name
— задать первичный медиум. Имеет приоритет над прагмойyt.PublishedPrimaryMedium
.KEEP_META
— сохранить текущую схему, пользовательские атрибуты и атрибуты хранения (кодеки, репликации, медиа) целевой таблицы. Данный модификатор может задаваться только совместно сTRUNCATE
.
Примечание
Использовать в USER_ATTRS
системные атрибуты не рекомендуется, поскольку результат их применения для записываемых данных не определён.
Примеры
INSERT INTO my_table WITH (TRUNCATE, EXPIRATION="15m")
SELECT key FROM my_table_source;
INSERT INTO my_table WITH USER_ATTRS="{attr1=value1; attr2=value2;}"
SELECT key FROM my_table_source;