INSERT INTO
Function
This command is used to insert the output of the SELECT statement to a Hudi table.
Syntax
INSERT INTO tableIndentifier select query;
Parameter Description
Parameter |
Description |
---|---|
tableIndentifier |
Name of the Hudi table. |
select query |
SELECT statement. |
Caveats
- Insert mode: Hudi supports three insert modes for tables with primary keys. You can set hoodie.sql.insert.mode to specify the insert mode. The default value is upsert.
hoodie.sql.insert.mode = upsert
- In strict mode, the INSERT statement retains the primary key constraint of COW tables and is not allowed to insert duplicate records. If a record already exists during data insertion, HoodieDuplicateKeyException is thrown for COW tables. For MOR tables, the behavior in this mode is the same as that in upsert mode.
- In non-strict mode, records are inserted to primary key tables.
- In upsert mode, duplicate values in the primary key table are updated.
- When submitting a Spark SQL job, you can configure the following parameters to switch bulk insert as the writing method for INSERT statements.
hoodie.sql.bulk.insert.enable = true hoodie.sql.insert.mode = non-strict
- Alternatively, you can set hoodie.datasource.write.operation to control the writing method of INSERT statements, with options including bulk_insert, insert, and upsert. (Note: This will override the result of the configured hoodie.sql.insert.mode).
hoodie.datasource.write.operation = upsert
Example
insert into h0 select 1, 'a1', 20; -- insert static partition insert into h_p0 partition(dt = '2021-01-02') select 1, 'a1'; -- insert dynamic partition insert into h_p0 select 1, 'a1', dt; -- insert dynamic partition insert into h_p1 select 1 as id, 'a1', '2021-01-03' as dt, '19' as hh; -- insert overwrite table insert overwrite table h0 select 1, 'a1', 20; -- insert overwrite table with static partition insert overwrite h_p0 partition(dt = '2021-01-02') select 1, 'a1'; -- insert overwrite table with dynamic partition insert overwrite table h_p1 select 2 as id, 'a2', '2021-01-03' as dt, '19' as hh;
Permission Requirements
Metadata service provided by DLI
- SQL permissions:
database
table
None
INSERT_INTO_TABLE
- Fine-grained permission: dli:table:insertIntoTable
Metadata services provided by LakeFormation. Refer to the LakeFormation documentation for details on permission configuration.
System Response
You can confirm the job status as successful and run a QUERY statement to view the data written in the table.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.