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;