---
title: "LOAD DATA - OceanBase 数据库 V4.3.0 | OceanBase 文档中心"
description: LOAD DATA 描述 该语句用于从外部导入数据。 注意 带有触发器（Trigger）的表禁止使用 LOAD DATA 语句。 要从外部文件导入数据，您需要具有 FILE 权限及以下设置： 加载服务器端文件时，需要提前设置系统变量 secure_file_priv ，配置导入或导出文件时可以访问的路径。 加载客户端…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.0

# LOAD DATA

更新时间：2026-04-10 11:58:36

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/900.sql-statement-of-oracle-mode/300.dcl-of-oracle-mode/1900.load-data-of-oracle-mode.md)  

## 描述

该语句用于从外部导入数据。

#### 注意

- 带有触发器（Trigger）的表禁止使用 `LOAD DATA` 语句。
 - 要从外部文件导入数据，您需要具有 `FILE` 权限及以下设置：
     - 加载服务器端文件时，需要提前设置系统变量 [secure_file_priv](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642503)，配置导入或导出文件时可以访问的路径。
     - 加载客户端本地文件时，需要在启动 MySQL/OBClient 客户端时添加 `--local-infile[=1]` 选项来启用从本地文件系统加载数据的功能。

OceanBase 数据库 `LOAD DATA` 语句支持加载以下输入文件：

- 服务器端（OBServer 节点）文件：文件位于 OceanBase 数据库的 OBServer 节点上。可以使用 `LOAD DATA INFILE` 语句，将服务器端文件中加载数据到数据库表中。
 - 客户端（本地）文件：文件位于客户端本地文件系统中。可以使用 `LOAD DATA LOCAL INFILE` 语句，将客户端本地文件中的数据加载到数据库表中。
 - OSS 文件：文件位于 OSS 文件系统。可以使用 `LOAD DATA REMOTE_OSS INFILE` 语句，将 OSS 文件中的数据加载到数据库表中。

`LOAD DATA` 目前可以对 CSV 格式的文本文件进行导入，整个导入的过程可以分为以下的流程：

1. 解析文件：OceanBase 数据库会根据用户输入的文件名，读取文件中的数据，并且根据指定的并行度来决定并行或者串行解析输入文件中的数据。
 2. 分发数据：由于 OceanBase 是分布式数据库，各个分区的数据可能分布在各个不同的 OBServer 节点，`LOAD DATA` 会对解析出来的数据进行计算，决定数据需要被发送到哪个 OBServer 节点。
 3. 插入数据：当目标 OBServer 节点收到数据后，在本地执行 `INSERT` 操作将数据插入到对应的分区当中。

要从外部文件导入数据，您需要具有 `FILE` 权限。您可以使用 `GRANT FILE ON *.* TO $user_name;` 语句进行授权，其中，`$user_name` 是需要执行 `LOAD DATA` 命令的用户。

## 语法

```sql
LOAD DATA
    [ [/*+ PARALLEL(N) load_batch_size(M) APPEND */]
      | [/*+ PARALLEL(N) direct(bool, int) */] ]
    [REMOTE_OSS | LOCAL] INFILE 'file_name'
    INTO TABLE table_name
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(column_name_var
        [, column_name_var] ...)]

```

## 参数解释

| 参数 | 描述 |
| --- | --- |
| parallel(N) | 加载数据的并行度，`N` 默认为 `4`。 |
| load_batch_size(M) | 指定每次插入的批量大小，`M` 默认为 `100`。推荐取值范围为 [100,1000]。 |
| APPEND | 使用 Hint 启用旁路导入功能，即支持直接在数据文件中分配空间并写入数据。`APPEND` Hint 默认等同于使用的 `direct(true, 0)`，同时可以实现 在线收集统计信息（`GATHER_OPTIMIZER_STATISTICS` Hint）的功能。 |
| direct | 使用 Hint 启用旁路导入。`direct(bool, int)` 中的 `bool`参数表示给定的 CSV 文件是否需要排序，`true` 表示需要排序；`int` 表示最大容忍的错误行数。 |
| REMOTE_OSS \| LOCAL | 可选项，   - `REMOTE_OSS` 用于指定是否从 OSS 文件系统读取数据。     #### 注意      如果使用了此参数，`file_name` 必须是一个 OSS 的地址。 - `LOCAL` 用于指定是否从客户端的本地文件系统读取数据。如果不使用 `LOCAL` 参数，那么将从服务器端（OBServer 节点）的文件系统读取数据。 |
| file_name | 指定输入文件的路径和文件名。 `file_name` 有以下格式：   - 导入文件在 OBServer 节点或客户端：`/$PATH/$FILENAME`。 - 导入文件在 OSS 上：`oss://$PATH/$FILENAME/?host=$HOST&access_id=$ACCESS_ID&access_key=$ACCESSKEY`。   参数解释如下：   - `$PATH`：指定了存储桶中的文件路径，表示文件所在的目录。 - `$FILENAME`：指定了文件的名称，表示要访问的具体文件。 - `$HOST`：指定了 OSS 服务的主机名或 CDN 加速的域名，即要访问的 OSS 服务的地址。 - `$ACCESS_ID`：指定了访问 OSS 服务所需的 Access Key ID，用于身份验证。 - `$ACCESSKEY`：指定了访问 OSS 服务所需的 Access Key Secret，用于身份验证。    #### 说明    在导入 OSS 上的文件时，需要确保以下信息：    - 确保访问 OSS 存储桶和文件的权限。你需要拥有足够的权限来读取指定的存储桶和文件。这通常需要在 OSS 控制台或通过 OSS API 设置访问权限，并将访问密钥（Access Key ID 和 Access Key Secret）配置为具有适当权限的凭据。 - 确保数据库服务器可以通过网络连接到指定的 `$HOST` 地址，以访问 OSS 服务。如果使用的是 OSS 服务的 CDN 加速域名，还需要确保 CDN 配置正确，并且网络连接正常。 |
| table_name | 导入数据的表的名称，支持分区表与非分区表。 |
| FIELDS \| COLUMNS | 指定字段的格式。   - `ENCLOSED BY`：设置导出值的修饰符。 - `TERMINATED BY`：设置导出列的结束符。 - `ESCAPED BY`：设置导出值忽略的字符。 |
| LINES STARTING BY | 指定行起始符。 |
| LINES TERMINATED BY | 指定行结束符。 |
| IGNORE number { LINES \| ROWS } | 忽略前几行，`LINES` 表示文件的前几行，`ROWS` 表示由字段分隔符指定的前几行数据。 缺省时，会将输入文件中的字段逐个与表中的列进行对应。 如果输入文件中并没有包含所有的列，那么缺少的列按照以下的规则会被默认填充：   - 字符类型：空字符串。 - 数值类型：0。 - 日期类型：`0000-00-00`。 |
| column_name_var | 指定导入的列名。 |

## 示例

### 示例一：从服务器端（OBServer 节点）文件导入数据

1. 设置全局安全路径。

   #### 注意

   由于安全原因，设置系统变量 `secure_file_priv` 时，只能通过本地 Socket 连接数据库执行修改该全局变量的 SQL 语句。更多信息，请参见 [secure_file_priv](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642503)。

   ```shell
   obclient> SET GLOBAL secure_file_priv = "/";

   ```
 2. 退出登录。

   #### 说明

   由于 `secure_file_priv` 是 `GLOBAL` 变量，所以需要执行 `\q` 退出使之生效。

   ```shell
   obclinet> \q

   ```

   返回结果如下：

   ```shell
   Bye

   ```
 3. 重连数据库后，使用 `LOAD DATA` 语句导入数据。

      - 普通导入。

       ```shell
       obclient> LOAD DATA INFILE '/home/admin/test.csv' INTO TABLE t1;

       ```
      - 使用 `APPEND` Hint 启用旁路导入。

       ```shell
       LOAD DATA /*+ PARALLEL(4) APPEND */ INFILE '/home/admin/test.csv' INTO TABLE t1;

       ```

### 示例二：从 OSS 文件导入数据

#### 注意

使用对象存储路径时，对象存储路径的各项参数由 `&` 符号进行分隔，请确保您输入的参数值中仅包含英文字母大小写、数字、`\/-_$+=` 以及通配符。如果您输入了上述以外的其他字符，可能会导致设置失败。

使用 `direct(bool, int)` Hint 启用旁路导入功能，导入文件可在 OSS 上。

```shell
LOAD DATA /*+ direct(true,1024) parallel(16) */ REMOTE_OSS INFILE 'oss://antsys-oceanbasebackup/backup_rd/xiaotao.ht/lineitem2.tbl?host=***.oss-cdn.***&access_id=***&access_key=***' INTO TABLE tbl1 FIELDS TERMINATED BY ',';

```

### 示例三：从客户端（本地）文件导入数据

使用以下语句，从本地文件导入数据至 OceanBase 数据库表中。

1. 打开终端或命令提示符窗口，并输入以下命令来启动客户端。

   ```shell
   obclient --local-infile -hxxx.xxx.xxx.xxx -P2881 -usys@oracle001 -p******

   ```

   返回结果如下：

   ```shell
   Welcome to the OceanBase.  Commands end with ; or \g.
   Your OceanBase connection id is 3221548006
   Server version: OceanBase 4.2.2.0 (r100000032024010510-75c47d4be18a399e13c5309de1a81da5caf4e7c0) (Built Jan  5 2024 10:17:55)

   Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

   obclient [SYS]>

   ```

   #### 注意

   为了使用 `LOAD DATA LOCAL INFILE` 功能，请使用 V2.2.4 或之后的版本的 OBClient 客户端。
 2. 在客户端中，执行 `LOAD DATA LOCAL INFILE` 语句来加载本地数据文件。

   ```shell
   obclient [SYS]> LOAD DATA LOCAL INFILE '/home/admin/test_data/tbl1.csv' INTO TABLE tbl1 FIELDS TERMINATED BY ',';

   ```

   返回结果如下：

   ```shell
   Query OK, 3 rows affected
   Records: 3  Deleted: 0  Skipped: 0  Warnings: 0

   ```

## 相关文档

- 更多有关使用 `LOAD DATA` 语句的示例信息，请参见 [使用 LOAD DATA 语句导入数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639647)。
 - 更多有关使用 `LOAD DATA` 旁路导入的示例信息，请参见 [使用 LOAD DATA 语句旁路导入数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639657)。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
