Different Ways to INSERT Data into
Tables or Views in SQL Server, Oracle,
and HiveQL
Summary Table – INSERT Methods
Method SQL Server (T-SQL) Oracle HiveQL (HQL)
Insert single row INSERT INTO Same as SQL Server Same as SQL Server
table_name (col1,
col2) VALUES (val1,
val2);
Insert multiple rows INSERT INTO INSERT ALL INTO ... Not supported; use
table_name VALUES INTO ... SELECT * multiple INSERTs
(1, 'A'), (2, 'B'); FROM dual;
Insert from another INSERT INTO table2 Same Same
table SELECT * FROM
table1;
Insert with column INSERT INTO table Same Same
list (col1, col2) VALUES
(...);
Insert using INSERT INSERT INTO table Not applicable Not supported
EXEC EXEC proc_name;
Insert using INSERT Not supported INSERT ALL INTO Not supported
ALL table1 ... INTO
table2 ... SELECT ...
Insert into view Allowed (if Same Not supported
updatable)
Insert using MERGE MERGE INTO ... MERGE INTO ... Not supported
Insert using CTE WITH CTE AS (...) Same Supported (some
INSERT INTO table limitations)
SELECT * FROM
CTE;
Insert into INSERT INTO table Use PARTITION INSERT INTO table
partitioned table PARTITION clause PARTITION (...)
(col=value) ... SELECT ...
SQL Server (T-SQL) Examples
-- Insert single row
INSERT INTO Employees (ID, Name) VALUES (1, 'Alice');
-- Insert multiple rows
INSERT INTO Employees (ID, Name) VALUES (2, 'Bob'), (3, 'Charlie');
-- Insert from another table
INSERT INTO EmployeesArchive SELECT * FROM Employees;
-- Insert using stored procedure output
INSERT INTO TempTable EXEC GetEmployeeData;
-- Merge (upsert)
MERGE Employees AS target
USING NewData AS source
ON target.ID = source.ID
WHEN MATCHED THEN UPDATE SET Name = source.Name
WHEN NOT MATCHED THEN INSERT (ID, Name) VALUES (source.ID,
source.Name);
Oracle Examples
-- Insert single row
INSERT INTO Employees (ID, Name) VALUES (1, 'Alice');
-- Insert multiple rows using INSERT ALL
INSERT ALL
INTO Employees (ID, Name) VALUES (2, 'Bob')
INTO Employees (ID, Name) VALUES (3, 'Charlie')
SELECT * FROM dual;
-- Insert from another table
INSERT INTO EmployeesArchive SELECT * FROM Employees;
-- MERGE (upsert)
MERGE INTO Employees e
USING NewEmployees n
ON (e.ID = n.ID)
WHEN MATCHED THEN UPDATE SET e.Name = n.Name
WHEN NOT MATCHED THEN INSERT (ID, Name) VALUES (n.ID,
n.Name);
HiveQL (HQL) Examples
-- Insert single row
INSERT INTO TABLE Employees VALUES (1, 'Alice');
-- Insert from another table
INSERT INTO TABLE EmployeesArchive SELECT * FROM Employees;
-- Insert overwrite (replace contents)
INSERT OVERWRITE TABLE EmployeesArchive SELECT * FROM
Employees WHERE dept = 'Sales';
-- Insert into specific partition
INSERT INTO TABLE Sales PARTITION (year=2025, month=8)
SELECT order_id, amount FROM Orders WHERE year = 2025 AND
month = 8;
-- Insert using CTE
WITH temp AS (
SELECT * FROM Employees WHERE department = 'HR'
)
INSERT INTO TABLE HR_Employees SELECT * FROM temp;