This is an automated email from the ASF dual-hosted git repository.
luzhijing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 2626995fc1 [Doc](Load)Add mysql load document (#16483)
2626995fc1 is described below
commit 2626995fc17d883975918e6080248351cd8fdc32
Author: huangzhaowei <[email protected]>
AuthorDate: Mon Feb 27 13:25:34 2023 +0800
[Doc](Load)Add mysql load document (#16483)
* Add doc
* 1
* doc2
* review again
* fix comment
* fix comment
* format
* add recommand dir
* cleint --local-infile
* add streaming_load_max_mb
---
.../import/import-scenes/local-file-load.md | 63 +++++++-
.../import/import-way/mysql-load-manual.md | 123 +++++++++++++++
docs/en/docs/data-operate/import/load-manual.md | 2 +
.../Load/MYSQL-LOAD.md | 169 +++++++++++++++++++++
docs/sidebars.json | 4 +-
.../import/import-scenes/local-file-load.md | 61 +++++++-
.../import/import-way/mysql-load-manual.md | 127 ++++++++++++++++
docs/zh-CN/docs/data-operate/import/load-manual.md | 2 +
.../Load/MYSQL-LOAD.md | 168 ++++++++++++++++++++
9 files changed, 712 insertions(+), 7 deletions(-)
diff --git a/docs/en/docs/data-operate/import/import-scenes/local-file-load.md
b/docs/en/docs/data-operate/import/import-scenes/local-file-load.md
index 25e619d298..24fef12ee1 100644
--- a/docs/en/docs/data-operate/import/import-scenes/local-file-load.md
+++ b/docs/en/docs/data-operate/import/import-scenes/local-file-load.md
@@ -25,6 +25,13 @@ under the License.
-->
# Import local data
+The following mainly introduces how to import local data in client.
+
+Now Doris support two way to load data from client local file:
+1. [Stream Load](../import-way/stream-load-manual.md)
+2. [MySql Load](../import-way/mysql-load-manual.md)
+
+## Stream Load
Stream Load is used to import local files into Doris.
@@ -39,7 +46,7 @@ In this document, we use the
[curl](https://curl.se/docs/manpage.html) command a
At the end of the document, we give a code example of importing data using Java
-## Import Data
+### Import Data
The request body of Stream Load is as follows:
@@ -104,12 +111,12 @@ PUT /api/{db}/{table}/_stream_load
- The status of the `Status` field is `Success`, which means the import is
successful.
- For details of other fields, please refer to the [Stream
Load](../../../sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD.md)
command documentation.
-## Import suggestion
+### Import suggestion
- Stream Load can only import local files.
- It is recommended to limit the amount of data for an import request to 1 - 2
GB. If you have a large number of local files, you can submit them concurrently
in batches.
-## Java code example
+### Java code example
Here is a simple JAVA example to execute Stream Load:
@@ -216,3 +223,53 @@ public class DorisStreamLoader {
> <version>4.5.13</version>
> </dependency>
> ```
+
+## MySql LOAD
+<version since="dev">
+ Example of mysql load
+</version>
+
+### Import Data
+1. Create a table
+
+ Use the `CREATE TABLE` command to create a table in the `demo` database to
store the data to be imported.
+
+ ```sql
+ CREATE TABLE IF NOT EXISTS load_local_file_test
+ (
+ id INT,
+ age TINYINT,
+ name VARCHAR(50)
+ )
+ unique key(id)
+ DISTRIBUTED BY HASH(id) BUCKETS 3;
+ ````
+
+2. Import data
+ Excute fellowing sql statmeent in the mysql client to load client local
file:
+
+ ```sql
+ LOAD DATA
+ LOCAL
+ INFILE '/path/to/local/demo.txt'
+ INTO TABLE demo.load_local_file_test
+ ```
+
+ For more advanced operations of the MySQL Load command, see [MySQL
Load](../../../sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md)
Command documentation.
+
+3. Wait for the import result
+
+ The MySql Load command is a synchronous command, and a successful return
indicates that the import is successful. If the imported data is large, a
longer waiting time may be required. Examples are as follows:
+
+ ```text
+ Query OK, 1 row affected (0.17 sec)
+ Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
+ ```
+
+ - Load success if the client show the return rows. Otherwise sql statement
will throw an exception and show the error message in client.
+ - For details of other fields, please refer to the [MySQL
Load](../../../sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md)
command documentation.
+
+### Import suggestion
+
+ - MySql Load can only import local files(which can be client local file or
fe local file) and only support csv format.
+ - It is recommended to limit the amount of data for an import request to 1
- 2 GB. If you have a large number of local files, you can submit them
concurrently in batches.
diff --git a/docs/en/docs/data-operate/import/import-way/mysql-load-manual.md
b/docs/en/docs/data-operate/import/import-way/mysql-load-manual.md
new file mode 100644
index 0000000000..9818e5b4e1
--- /dev/null
+++ b/docs/en/docs/data-operate/import/import-way/mysql-load-manual.md
@@ -0,0 +1,123 @@
+---
+{
+ "title": "MySql load",
+ "language": "en"
+}
+---
+
+<!--
+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.
+-->
+
+# Mysql load
+<version since="dev">
+
+This is an stand syntax of MySql [LOAD
DATA](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) for user to load
local file.
+
+MySql load synchronously executes the import and returns the import result.
The return information will show whether the import is successful for user.
+
+MySql load is mainly suitable for importing local files on the client side, or
importing data from a data stream through a program.
+
+</version>
+
+## Basic Principles
+
+The MySql Load are similar with Stream Load. Both import local files into the
Doris cluster, so the MySQL Load will reuses StreamLoad:
+
+ 1. FE receives the MySQL Load request executed by the client and then analyse
the SQL
+
+ 2. FE build the MySql Load request as a StreamLoad request.
+
+ 3. FE selects a BE node to send a StreamLoad request
+
+ 4. When sending the request, FE will read the local file data from the MySQL
client side streamingly, and send it to the HTTP request of StreamLoad
asynchronously.
+
+ 5. After the data transfer on the MySQL client side is completed, FE waits
for the StreamLoad to complete, and displays the import success or failure
information to the client side.
+
+
+## Support data format
+
+MySql Load currently only supports data formats: CSV (text).
+
+## Basic operations
+
+### Create test table
+```sql
+ CREATE TABLE testdb.t1 (pk INT, v1 INT SUM) AGGREGATE KEY (pk) DISTRIBUTED BY
hash (pk) PROPERTIES ('replication_num' = '1');
+ ```
+ ### import file from client node
+ Suppose there is a CSV file named 'client_local.csv 'on the current path of
the client side, which will be imported into the test table'testdb.t1' using
the MySQL LOAD syntax.
+
+```sql
+LOAD DATA LOCAL
+INFILE 'client_local.csv '
+INTO TABLE testdb.t1
+PARTITION (partition_a, partition_b, partition_c, partition_d)
+COLUMNS TERMINATED BY '\ t'
+LINES TERMINATED BY '\ n'
+IGNORE 1 LINES
+(K1, k2, v2, v10, v11)
+SET (c1 = k1, c2 = k2, c3 = v10, c4 = v11)
+PROPERTIES ("strict_mode" = "true")
+```
+1. MySQL Load starts with the syntax `LOAD DATA`, and specifying `LOCAL` means
reading client side files.
+2. The local fill path will be filled after `INFILE`, which can be a relative
path or an absolute path. Currently only a single file is supported, and
multiple files are not supported
+3. The table name after `INTO TABLE` can specify the database name, as shown
in the case. It can also be omitted, and the current database for the user will
be used.
+4. `PARTITION` syntax supports specified partition to import
+5. `COLUMNS TERMINATED BY` specifies the column separator
+6. `LINES TERMINATED BY` specifies the line separator
+7. `IGNORE num LINES` skips the num header of the CSV.
+8. Column mapping syntax, see the column mapping chapter of [Imported Data
Transformation](../import-scenes/load-data-convert.md) for specific parameters
+9. `PROPERTIES` is the configuration of import, please refer to the [MySQL
Load](../../../sql-manual/sql-reference/Data-Management-Statements/Load/MYSQL-LOAD.md)
command manual for specific properties.
+
+### import file from fe server node
+Assuming that the '/root/server_local.csv' path on the FE node is a CSV file,
use the MySQL client side to connect to the corresponding FE node, and then
execute the following command to import data into the test table.
+
+```sql
+LOAD DATA
+INFILE '/root/server_local.csv'
+INTO TABLE testdb.t1
+PARTITION (partition_a, partition_b, partition_c, partition_d)
+COLUMNS TERMINATED BY '\ t'
+LINES TERMINATED BY '\ n'
+IGNORE 1 LINES
+(K1, k2, v2, v10, v11)
+SET (c1 = k1, c2 = k2, c3 = v10, c4 = v11)
+PROPERTIES ("strict_mode" = "true")
+```
+1. The only difference between the syntax of importing server level local
files and importing client side syntax is whether the'LOCAL 'keyword is added
after the'LOAD DATA' keyword.
+2. FE will have multi-nodes, and importing server level files can only import
FE nodes connected by the client side, and cannot import files local to other
FE nodes.
+3. Server side load was disabled by default. Enable it by setting
`mysql_load_server_secure_path` with a secure path. All the load file should be
under this path. Recommend create a `local_import_data` directory under
`DORIS_HOME` to load data.
+
+### Return result
+Since MySQL load is a synchronous import method, the imported results are
returned to the user through SQL syntax.
+If the import fails, a specific error message will be displayed. If the import
is successful, the number of imported rows will be displayed.
+
+```Text
+Query OK, 1 row affected (0.17 sec)
+Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
+```
+
+## Notice
+
+1. If you see this `LOAD DATA LOCAL INFILE file request rejected due to
restrictions on access` message, you should connet mysql with `mysql
--local-infile=1` command to enable client to load local file.
+2. The configuration for StreamLoad will also affect MySQL Load. Such as the
configurate in be named `streaming_load_max_mb`, it's 10GB by default and it
will control the max size for one load.
+
+## More Help
+
+1. For more detailed syntax and best practices for using MySQL Load, see the
[MySQL
Load](../../../sql-manual/sql-reference/Data-Management-Statements/Load/MYSQL-LOAD.md)
command manual.
\ No newline at end of file
diff --git a/docs/en/docs/data-operate/import/load-manual.md
b/docs/en/docs/data-operate/import/load-manual.md
index 1eedeed429..922870dbb2 100644
--- a/docs/en/docs/data-operate/import/load-manual.md
+++ b/docs/en/docs/data-operate/import/load-manual.md
@@ -53,6 +53,7 @@ Doris provides a variety of data import solutions, and you
can choose different
| Binlog Load | [collect Mysql Binlog import
data](./import-way/binlog-load-manual.md) |
| Insert Into | [External table imports data through
INSERT](./import-way/insert-into-manual.md) |
| S3 Load | [Object storage data import of S3
protocol](./import-way/s3-load-manual.md) |
+| MySql Load | [Local data import of MySql
protocol](./import-way/mysql-load-manual.md) |
## Supported data formats
@@ -63,6 +64,7 @@ Different import methods support slightly different data
formats.
| Broker Load | parquet, orc, csv, gzip |
| Stream Load | csv, json, parquet, orc |
| Routine Load | csv, json |
+| MySql Load | csv |
## import instructions
diff --git
a/docs/en/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md
b/docs/en/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md
new file mode 100644
index 0000000000..34c28cb707
--- /dev/null
+++
b/docs/en/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md
@@ -0,0 +1,169 @@
+---
+{
+ "title": "MYSQL-LOAD",
+ "language": "en"
+}
+---
+
+<!--
+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.
+-->
+
+## MYSQL-LOAD
+
+### Name
+
+<version since="dev">
+ MYSQL LOAD
+</version>
+
+### Description
+
+mysql-load: Import local data using the MySql client
+
+```
+LOAD DATA
+[LOCAL]
+INFILE 'file_name'
+INTO TABLE tbl_name
+[PARTITION (partition_name [, partition_name] ...)]
+[COLUMNS TERMINATED BY 'string']
+[LINES TERMINATED BY 'string']
+[IGNORE number {LINES | ROWS}]
+[(col_name_or_user_var [, col_name_or_user_var] ...)]
+[SET (col_name={expr | DEFAULT} [, col_name={expr | DEFAULT}] ...)]
+[PROPERTIES (key1 = value1 [, key2=value2]) ]
+```
+
+This statement is used to import data to the specified table. Unlike normal
Load, this import method is a synchronous import.
+
+This import method can still guarantee the atomicity of a batch of import
tasks, either all data imports are successful or all fail.
+
+1. MySQL Load starts with the syntax `LOAD DATA`, without specifying `LABEL`
+2. Specify `LOCAL` to read client side files. Not specified to read FE server
side local files. Server side load was disabled by default. It can be enabled
by setting a secure path in FE configuration `mysql_load_server_secure_path`
+3. The local fill path will be filled after `INFILE`, which can be a relative
path or an absolute path. Currently only a single file is supported, and
multiple files are not supported
+4. The table name after `INTO TABLE` can specify the database name, as shown
in the case. It can also be omitted, and the database where the current user is
located will be used.
+5. `PARTITION` syntax supports specified partition to import
+6. `COLUMNS TERMINATED BY` specifies the column separator
+7. `LINES TERMINATED BY` specifies the line separator
+8. `IGNORE num LINES` The user skips the header of the CSV and can skip any
number of lines. This syntax can also be replaced by'IGNORE num ROWS '
+9. Column mapping syntax, please refer to the column mapping chapter of
[Imported Data
Transformation](../../../data-operate/import/import-way/mysql-load-manual.md)
+10. `PROPERTIES` parameter configuration, see below for details
+
+### PROPERTIES
+
+1. max_filter_ratio:The maximum tolerable data ratio that can be filtered (for
reasons such as data irregularity). Zero tolerance by default. Data
irregularities do not include rows filtered out by where conditions.
+
+2. timeout: Specify the import timeout. in seconds. The default is 600
seconds. The setting range is from 1 second to 259200 seconds.
+
+3. strict_mode: The user specifies whether to enable strict mode for this
import. The default is off.
+
+4. timezone: Specify the time zone used for this import. The default is Dongba
District. This parameter affects the results of all time zone-related functions
involved in the import.
+
+5. exec_mem_limit: Import memory limit. Default is 2GB. The unit is bytes.
+
+### Example
+
+1. Import the data from the client side local file `testData` into the table
`testTbl` in the database `testDb`. Specify a timeout of 100 seconds
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("timeout"="100")
+ ```
+
+2. Import the data from the server side local file `/root/testData` (set FE
config `mysql_load_server_secure_path` to be `root` already) into the table
`testTbl` in the database `testDb`. Specify a timeout of 100 seconds
+
+ ```sql
+ LOAD DATA
+ INFILE '/root/testData'
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("timeout"="100")
+ ```
+
+3. Import data from client side local file `testData` into table `testTbl` in
database `testDb`, allowing 20% error rate
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("max_filter_ratio"="0.2")
+ ```
+
+4. Import the data from the client side local file `testData` into the table
`testTbl` in the database `testDb`, allowing a 20% error rate and specifying
the column names of the file
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ (k2, k1, v1)
+ PROPERTIES ("max_filter_ratio"="0.2")
+ ```
+
+5. Import the data in the local file `testData` into the p1, p2 partitions in
the table of `testTbl` in the database `testDb`, allowing a 20% error rate.
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ PARTITION (p1, p2)
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("max_filter_ratio"="0.2")
+ ```
+
+6. Import the data in the CSV file `testData` with a local row delimiter of
`0102` and a column delimiter of `0304` into the table `testTbl` in the
database `testDb`.
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ COLUMNS TERMINATED BY '0304'
+ LINES TERMINATED BY '0102'
+ ```
+
+7. Import the data from the local file `testData` into the p1, p2 partitions
in the table of `testTbl` in the database `testDb` and skip the first 3 lines.
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ PARTITION (p1, p2)
+ INTO TABLE testDb.testTbl
+ IGNORE 1 LINES
+ ```
+
+8. Import data for strict schema filtering and set the time zone to
Africa/Abidjan
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("strict_mode"="true", "timezone"="Africa/Abidjan")
+ ```
+
+9. Import data is limited to 10GB of import memory and timed out in 10 minutes
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("exec_mem_limit"="10737418240", "timeout"="600")
+ ```
+
+### Keywords
+
+ MYSQL, LOAD
diff --git a/docs/sidebars.json b/docs/sidebars.json
index 4b042f3aee..ed35625e5b 100644
--- a/docs/sidebars.json
+++ b/docs/sidebars.json
@@ -95,6 +95,7 @@
"data-operate/import/import-way/routine-load-manual",
"data-operate/import/import-way/spark-load-manual",
"data-operate/import/import-way/stream-load-manual",
+
"data-operate/import/import-way/mysql-load-manual",
"data-operate/import/import-way/s3-load-manual",
"data-operate/import/import-way/insert-into-manual",
"data-operate/import/import-way/load-json-format"
@@ -826,7 +827,8 @@
"sql-manual/sql-reference/Data-Manipulation-Statements/Load/PAUSE-SYNC-JOB",
"sql-manual/sql-reference/Data-Manipulation-Statements/Load/BROKER-LOAD",
"sql-manual/sql-reference/Data-Manipulation-Statements/Load/CREATE-SYNC-JOB",
-
"sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD"
+
"sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD",
+
"sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD"
]
},
{
diff --git
a/docs/zh-CN/docs/data-operate/import/import-scenes/local-file-load.md
b/docs/zh-CN/docs/data-operate/import/import-scenes/local-file-load.md
index a973ed0c2d..be023fe354 100644
--- a/docs/zh-CN/docs/data-operate/import/import-scenes/local-file-load.md
+++ b/docs/zh-CN/docs/data-operate/import/import-scenes/local-file-load.md
@@ -26,7 +26,13 @@ under the License.
-->
# 导入本地数据
+本文档主要介绍如何从客户端导入本地的数据。
+目前Doris支持两种从本地导入数据的模式:
+1. [Stream Load](../import-way/stream-load-manual.md)
+2. [MySql Load](../import-way/mysql-load-manual.md)
+
+## Stream Load
Stream Load 用于将本地文件导入到 Doris 中。
不同于其他命令的提交方式,Stream Load 是通过 HTTP 协议与 Doris 进行连接交互的。
@@ -40,7 +46,7 @@ Stream Load 用于将本地文件导入到 Doris 中。
文档最后,我们给出一个使用 Java 导入数据的代码示例
-## 导入数据
+### 导入数据
Stream Load 的请求体如下:
@@ -105,12 +111,12 @@ PUT /api/{db}/{table}/_stream_load
- `Status` 字段状态为 `Success` 即表示导入成功。
- 其他字段的详细介绍,请参阅 [Stream
Load](../../../sql-manual/sql-reference/Data-Manipulation-Statements/Load/STREAM-LOAD.md)
命令文档。
-## 导入建议
+### 导入建议
- Stream Load 只能导入本地文件。
- 建议一个导入请求的数据量控制在 1 - 2 GB 以内。如果有大量本地文件,可以分批并发提交。
-## Java 代码示例
+### Java 代码示例
这里通过一个简单的 JAVA 示例来执行 Stream Load:
@@ -219,3 +225,52 @@ public class DorisStreamLoader {
> <version>4.5.13</version>
></dependency>
> ```
+
+## MySql LOAD
+<version since="dev">
+ MySql LOAD样例
+</version>
+
+### 导入数据
+1. 创建一张表
+
+ 通过 `CREATE TABLE` 命令在`demo`创建一张表用于存储待导入的数据
+
+ ```sql
+ CREATE TABLE IF NOT EXISTS load_local_file_test
+ (
+ id INT,
+ age TINYINT,
+ name VARCHAR(50)
+ )
+ unique key(id)
+ DISTRIBUTED BY HASH(id) BUCKETS 3;
+ ```
+
+2. 导入数据
+ 在MySql客户端下执行以下 SQL 命令导入本地文件:
+
+ ```sql
+ LOAD DATA
+ LOCAL
+ INFILE '/path/to/local/demo.txt'
+ INTO TABLE demo.load_local_file_test
+ ```
+
+ 关于 MySQL Load 命令的更多高级操作,请参阅 [MySQL
Load](../../../sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md)
命令文档。
+
+3. 等待导入结果
+
+ MySql Load 命令是同步命令,返回成功即表示导入成功。如果导入数据较大,可能需要较长的等待时间。示例如下:
+
+ ```text
+ Query OK, 1 row affected (0.17 sec)
+ Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
+ ```
+
+ - 如果出现上述结果, 则表示导入成功。导入失败, 会抛出错误,并在客户端显示错误原因
+ - 其他字段的详细介绍,请参阅 [MySQL
Load](../../../sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md)
命令文档。
+
+### 导入建议
+- MySql Load 只能导入本地文件(可以是客户端本地或者连接的FE节点本地), 而且支持CSV格式。
+- 建议一个导入请求的数据量控制在 1 - 2 GB 以内。如果有大量本地文件,可以分批并发提交。
diff --git
a/docs/zh-CN/docs/data-operate/import/import-way/mysql-load-manual.md
b/docs/zh-CN/docs/data-operate/import/import-way/mysql-load-manual.md
new file mode 100644
index 0000000000..efd3529f82
--- /dev/null
+++ b/docs/zh-CN/docs/data-operate/import/import-way/mysql-load-manual.md
@@ -0,0 +1,127 @@
+---
+{
+ "title": "MySql load",
+ "language": "zh-CN"
+}
+---
+
+<!--
+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.
+-->
+
+# MySql load
+<version since="dev">
+
+该语句兼容MySQL标准的[LOAD
DATA](https://dev.mysql.com/doc/refman/8.0/en/load-data.html)语法,方便用户导入本地数据,并降低学习成本。
+
+MySql load 同步执行导入并返回导入结果。用户可直接通过SQL返回信息判断本次导入是否成功。
+
+MySql load 主要适用于导入客户端本地文件,或通过程序导入数据流中的数据。
+
+</version>
+
+## 基本原理
+
+MySql Load和Stream Load功能相似, 都是导入本地文件到Doris集群中, 因此MySQL
Load实现复用了StreamLoad的基础导入能力:
+
+1. FE接收到客户端执行的MySQL Load请求, 完成SQL解析工作
+
+2. FE将Load请求拆解,并封装为StreamLoad的请求.
+
+3. FE选择一个BE节点发送StreamLoad请求
+
+4. 发送请求的同时, FE会异步且流式的从MySQL客户端读取本地文件数据, 并实时的发送到StreamLoad的HTTP请求中.
+
+5. MySQL客户端数据传输完毕, FE等待StreamLoad完成, 并展示导入成功或者失败的信息给客户端.
+
+
+## 支持数据格式
+
+MySQL Load 支持数据格式:CSV(文本)。
+
+## 基本操作举例
+
+### 创建测试表
+```sql
+CREATE TABLE testdb.t1 (pk INT, v1 INT SUM) AGGREGATE KEY (pk) DISTRIBUTED BY
hash (pk) PROPERTIES ('replication_num' = '1');
+```
+
+### 导入客户端文件
+假设在客户端本地当前路径上有一个CSV文件, 名为`client_local.csv`, 使用MySQL
LOAD语法将表导入到测试表`testdb.t1`中.
+
+```sql
+LOAD DATA LOCAL
+INFILE 'client_local.csv'
+INTO TABLE testdb.t1
+PARTITION (partition_a, partition_b, partition_c, partition_d)
+COLUMNS TERMINATED BY '\t'
+LINES TERMINATED BY '\n'
+IGNORE 1 LINES
+(k1, k2, v2, v10, v11)
+set (c1=k1,c2=k2,c3=v10,c4=v11)
+PROPERTIES ("strict_mode"="true")
+```
+1. MySQL Load以语法`LOAD DATA`开头, 指定`LOCAL`表示读取客户端文件.
+2. `INFILE`内填写本地文件路径, 可以是相对路径, 也可以是绝对路径.目前只支持单个文件, 不支持多个文件
+3. `INTO TABLE`的表名可以指定数据库名, 如案例所示. 也可以省略, 则会使用当前用户所在的数据库.
+4. `PARTITION`语法支持指定分区导入
+5. `COLUMNS TERMINATED BY`指定列分隔符
+6. `LINES TERMINATED BY`指定行分隔符
+7. `IGNORE num LINES`用户跳过CSV的num表头.
+8. 列映射语法, 具体参数详见[导入的数据转换](../import-scenes/load-data-convert.md) 的列映射章节
+9. `PROPERTIES`导入参数, 具体参数详见[MySQL
Load](../../../sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md)
命令手册。
+
+### 导入服务端文件
+假设在FE节点上的`/root/server_local.csv`路径为一个CSV文件, 使用MySQL客户端连接对应的FE节点,
然后执行一下命令将数据导入到测试表中.
+
+```sql
+LOAD DATA
+INFILE '/root/server_local.csv'
+INTO TABLE testdb.t1
+PARTITION (partition_a, partition_b, partition_c, partition_d)
+COLUMNS TERMINATED BY '\t'
+LINES TERMINATED BY '\n'
+IGNORE 1 LINES
+(k1, k2, v2, v10, v11)
+set (c1=k1,c2=k2,c3=v10,c4=v11)
+PROPERTIES ("strict_mode"="true")
+```
+1. 导入服务端本地文件的语法和导入客户端语法的唯一区别是`LOAD DATA`关键词后面是否加入`LOCAL`关键字.
+2. FE为多节点部署, 导入服务端文件功能只能够导入客户端连接的FE节点, 无法导入其他FE节点本地的文件.
+3. 服务端导入默认是关闭, 通过设置FE的配置`mysql_load_server_secure_path`开启,
导入文件的必须在该目录下.建议在`DORIS_HOME`目录下创建一个`local_import_data`目录用于导入数据.
+
+### 返回结果
+
+由于 MySQL load 是一种同步的导入方式,所以导入的结果会通过SQL语法返回给用户。
+如果导入执行失败, 会展示具体的报错信息. 如果导入成功, 则会显示导入的行数.
+
+```text
+Query OK, 1 row affected (0.17 sec)
+Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
+```
+
+## 注意事项
+
+1. 如果客户端出现`LOAD DATA LOCAL INFILE file request rejected due to restrictions on
access`错误, 需要用`mysql --local-infile=1`命令来打开客户端的导入功能.
+
+2. MySQL Load的导入会受到StreamLoad的配置项限制,
例如BE支持的StreamLoad最大文件量受`streaming_load_max_mb`控制, 默认为10GB.
+
+## 更多帮助
+
+1. 关于 MySQL Load 使用的更多详细语法及最佳实践,请参阅 [MySQL
Load](../../../sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md)
命令手册。
+
diff --git a/docs/zh-CN/docs/data-operate/import/load-manual.md
b/docs/zh-CN/docs/data-operate/import/load-manual.md
index ab4407ebb1..122d71c8c2 100644
--- a/docs/zh-CN/docs/data-operate/import/load-manual.md
+++ b/docs/zh-CN/docs/data-operate/import/load-manual.md
@@ -53,6 +53,7 @@ Doris 提供多种数据导入方案,可以针对不同的数据源进行选
| Binlog Load | [采集Mysql Binlog 导入数据](./import-way/binlog-load-manual.md) |
| Insert Into | [外部表通过INSERT方式导入数据](./import-way/insert-into-manual.md) |
| S3 Load | [S3协议的对象存储数据导入](./import-way/s3-load-manual.md) |
+| MySQL Load | [MySQL客户端导入本地数据](./import-way/mysql-load-manual.md) |
## 支持的数据格式
@@ -63,6 +64,7 @@ Doris 提供多种数据导入方案,可以针对不同的数据源进行选
| Broker Load | parquet、orc、csv、gzip |
| Stream Load | csv、json、parquet、orc |
| Routine Load | csv、json |
+| MySQL Load | csv |
## 导入说明
diff --git
a/docs/zh-CN/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md
b/docs/zh-CN/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md
new file mode 100644
index 0000000000..8e78a6d074
--- /dev/null
+++
b/docs/zh-CN/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Load/MYSQL-LOAD.md
@@ -0,0 +1,168 @@
+---
+{
+ "title": "MYSQL-LOAD",
+ "language": "zh-CN"
+}
+---
+
+<!--
+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.
+-->
+
+## MYSQL-LOAD
+
+### Name
+<version since="dev">
+ MYSQL LOAD
+</version>
+
+### Description
+
+mysql-load: 使用MySql客户端导入本地数据
+
+```
+LOAD DATA
+[LOCAL]
+INFILE 'file_name'
+INTO TABLE tbl_name
+[PARTITION (partition_name [, partition_name] ...)]
+[COLUMNS TERMINATED BY 'string']
+[LINES TERMINATED BY 'string']
+[IGNORE number {LINES | ROWS}]
+[(col_name_or_user_var [, col_name_or_user_var] ...)]
+[SET (col_name={expr | DEFAULT} [, col_name={expr | DEFAULT}] ...)]
+[PROPERTIES (key1 = value1 [, key2=value2]) ]
+```
+
+该语句用于向指定的 table 导入数据,与普通Load区别是,这种导入方式是同步导入。
+
+这种导入方式仍然能够保证一批导入任务的原子性,要么全部数据导入成功,要么全部失败。
+
+1. MySQL Load以语法`LOAD DATA`开头, 无须指定LABEL
+2. 指定`LOCAL`表示读取客户端文件.不指定表示读取FE服务端本地文件. 导入FE本地文件的功能默认是关闭的,
需要在FE节点上设置`mysql_load_server_secure_path`来指定安全路径, 才能打开该功能.
+3. `INFILE`内填写本地文件路径, 可以是相对路径, 也可以是绝对路径.目前只支持单个文件, 不支持多个文件
+4. `INTO TABLE`的表名可以指定数据库名, 如案例所示. 也可以省略, 则会使用当前用户所在的数据库.
+5. `PARTITION`语法支持指定分区导入
+6. `COLUMNS TERMINATED BY`指定列分隔符
+7. `LINES TERMINATED BY`指定行分隔符
+8. `IGNORE num LINES`用户跳过CSV的表头, 可以跳过任意行数. 该语法也可以用`IGNORE num ROWS`代替
+9. 列映射语法,
具体参数详见[导入的数据转换](../../../data-operate/import/import-way/mysql-load-manual.md)
的列映射章节
+10. `PROPERTIES`参数配置, 详见下文
+
+### PROPERTIES
+
+1. max_filter_ratio:最大容忍可过滤(数据不规范等原因)的数据比例。默认零容忍。
+
+2. timeout: 指定导入的超时时间。单位秒。默认是 600 秒。可设置范围为 1 秒 ~ 259200 秒。
+
+3. strict_mode: 用户指定此次导入是否开启严格模式,默认为关闭。
+
+4. timezone: 指定本次导入所使用的时区。默认为东八区。该参数会影响所有导入涉及的和时区有关的函数结果。
+
+5. exec_mem_limit: 导入内存限制。默认为 2GB。单位为字节。
+
+### Example
+
+1. 将客户端本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表。指定超时时间为 100 秒
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("timeout"="100")
+ ```
+
+2.
将服务端本地文件'/root/testData'(需设置FE配置`mysql_load_server_secure_path`为`/root`)中的数据导入到数据库'testDb'中'testTbl'的表。指定超时时间为
100 秒
+
+ ```sql
+ LOAD DATA
+ INFILE '/root/testData'
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("timeout"="100")
+ ```
+
+3. 将客户端本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("max_filter_ratio"="0.2")
+ ```
+
+4. 将客户端本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率,并且指定文件的列名
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ (k2, k1, v1)
+ PROPERTIES ("max_filter_ratio"="0.2")
+ ```
+
+5. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表中的p1, p2分区, 允许20%的错误率。
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ PARTITION (p1, p2)
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("max_filter_ratio"="0.2")
+ ```
+
+6. 将本地行分隔符为`0102`,列分隔符为`0304`的CSV文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表中。
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ COLUMNS TERMINATED BY '0304'
+ LINES TERMINATED BY '0102'
+ ```
+
+7. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表中的p1, p2分区, 并跳过前面3行。
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ PARTITION (p1, p2)
+ INTO TABLE testDb.testTbl
+ IGNORE 1 LINES
+ ```
+
+8. 导入数据进行严格模式过滤,并设置时区为 Africa/Abidjan
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("strict_mode"="true", "timezone"="Africa/Abidjan")
+ ```
+
+9. 导入数据进行限制导入内存为10GB, 并在10分钟超时
+
+ ```sql
+ LOAD DATA LOCAL
+ INFILE 'testData'
+ INTO TABLE testDb.testTbl
+ PROPERTIES ("exec_mem_limit"="10737418240", "timeout"="600")
+ ```
+
+### Keywords
+
+ MYSQL, LOAD
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]