Insert a new row into a table. If a column name list is specified, it must exactly match the column name list output by queries. Columns inserted into a table but not in the column name list will be filled with a null value. If no column name list is specified, the columns output by queries must exactly match those in the target table.
Statement
Presto:
INSERT INTO table_name [ ( column [, ... ] ) ] query
Spark:
INSERT INTO table_identifier [ partition_spec ] [ ( column_list ) ]
{ VALUES ( { value | NULL } [ , ... ] ) [ , ( ... ) ] | query }
Parameter
[ partition_spec ]
: Partitioning column name and value Example: dt='2021-06-01'
[ ( column [, ... ] ) ]
: All the columns
[table_name] | table_identifier
: Table name
[query]
: A general Select query statement
Example
Example for Presto and Spark:
INSERT INTO orders SELECT * FROM new_orders;
INSERT INTO cities VALUES (1, 'China');
INSERT INTO nation (nationkey, name, regionkey, comment)
VALUES (26, 'POLAND', 3, 'no comment');
Example for Spark:
Use a Select query statement for inserting a column into a partition:
INSERT INTO students PARTITION (student_id = 444444) SELECT name, address FROM persons WHERE name = 'dlc'
Insert a column into a partition:
INSERT INTO students PARTITION (student_id = 11215017) (address, name) VALUES ('Shen zhen, China', 'tester')
Limitations
Presto does not support inserting columns into partitions. You can use Spark instead.
Was this page helpful?