| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
| <concept id="dml"> |
| |
| <title>DML Statements</title> |
| <prolog> |
| <metadata> |
| <data name="Category" value="Impala"/> |
| <data name="Category" value="SQL"/> |
| <data name="Category" value="DML"/> |
| <data name="Category" value="Data Analysts"/> |
| <data name="Category" value="Developers"/> |
| <data name="Category" value="Tables"/> |
| <data name="Category" value="ETL"/> |
| <data name="Category" value="Ingest"/> |
| </metadata> |
| </prolog> |
| |
| <conbody> |
| |
| <p> |
| DML refers to <q>Data Manipulation Language</q>, a subset of SQL statements that modify the data stored in |
| tables. Because Impala focuses on query performance and leverages the append-only nature of HDFS storage, |
| currently Impala only supports a small set of DML statements: |
| </p> |
| |
| <ul> |
| <li> |
| <xref keyref="delete"/>. Works for Kudu tables only. |
| </li> |
| |
| <li> |
| <xref keyref="insert"/>. |
| </li> |
| |
| <li> |
| <xref keyref="load_data"/>. Does not apply for HBase or Kudu tables. |
| </li> |
| |
| <li> |
| <xref keyref="update"/>. Works for Kudu tables only. |
| </li> |
| |
| <li> |
| <xref keyref="upsert"/>. Works for Kudu tables only. |
| </li> |
| </ul> |
| |
| <p> |
| <codeph>INSERT</codeph> in Impala is primarily optimized for inserting large volumes of data in a single |
| statement, to make effective use of the multi-megabyte HDFS blocks. This is the way in Impala to create new |
| data files. If you intend to insert one or a few rows at a time, such as using the <codeph>INSERT ... |
| VALUES</codeph> syntax, that technique is much more efficient for Impala tables stored in HBase. See |
| <xref href="impala_hbase.xml#impala_hbase"/> for details. |
| </p> |
| |
| <p> |
| <codeph>LOAD DATA</codeph> moves existing data files into the directory for an Impala table, making them |
| immediately available for Impala queries. This is one way in Impala to work with data files produced by other |
| Hadoop components. (<codeph>CREATE EXTERNAL TABLE</codeph> is the other alternative; with external tables, |
| you can query existing data files, while the files remain in their original location.) |
| </p> |
| |
| <p> |
| In <keyword keyref="impala28_full"/> and higher, Impala does support the <codeph>UPDATE</codeph>, <codeph>DELETE</codeph>, |
| and <codeph>UPSERT</codeph> statements for Kudu tables. |
| For HDFS or S3 tables, to simulate the effects of an <codeph>UPDATE</codeph> or <codeph>DELETE</codeph> statement |
| in other database systems, typically you use <codeph>INSERT</codeph> or <codeph>CREATE TABLE AS SELECT</codeph> to copy data |
| from one table to another, filtering out or changing the appropriate rows during the copy operation. |
| </p> |
| |
| <p> |
| You can also achieve a result similar to <codeph>UPDATE</codeph> by using Impala tables stored in HBase. |
| When you insert a row into an HBase table, and the table |
| already contains a row with the same value for the key column, the older row is hidden, effectively the same |
| as a single-row <codeph>UPDATE</codeph>. |
| </p> |
| |
| <p rev="2.6.0"> |
| Impala can perform DML operations for tables or partitions stored in the Amazon S3 filesystem |
| with <keyword keyref="impala26_full"/> and higher. See <xref href="impala_s3.xml#s3"/> for details. |
| </p> |
| |
| <p conref="../shared/impala_common.xml#common/related_info"/> |
| |
| <p> |
| The other major classifications of SQL statements are data definition language (see |
| <xref href="impala_ddl.xml#ddl"/>) and queries (see <xref href="impala_select.xml#select"/>). |
| </p> |
| </conbody> |
| </concept> |