首批通过分布式安全可靠测评,为关键业务系统打造
使用 LOAD DATA 语句旁路导入数据
更新时间:2026-04-10 11:58:36
LOAD DATA 语句通过 Hint 使用 direct 来表示是否走旁路导入。
使用限制
- 不能两个语句同时写一个表,因为导入的过程中会先加表锁。
- 不支持在触发器(Trigger)使用。
- 支持
lob类型,但是性能比较差,lob会走原来事务写入数据的路径。 - 不能在多行事务中运行。
注意事项
为了提高数据导入速率,OceanBase 数据库在 LOAD DATA 操作中采用了并行设计。在该过程中,需要导入的数据被划分为多个子任务以并行方式执行,每个子任务都作为一个独立的事务进行处理,并且执行顺序是随机的。因此,需要注意以下事项:
- 无法保证整体数据导入的原子性。
- 对于无主键表来说,数据写入的顺序可能与文件中的数据顺序不一致。
语法
LOAD DATA /*+ direct(need_sort,max_error) parallel(N) */ INFILE 'file_name' ...
更多 LOAD DATA 语法的信息,请参见 LOAD DATA。
参数解释:
| 参数 | 描述 |
|---|---|
| direct | 表示走旁路导入。 |
| need_sort | 表示是否需要 OceanBase 数据库对数据进行排序。 值为 bool 类型:
|
| max_error | 表示最大的容忍的错误的行数。值为 INT 类型,超过这个数值LOAD DATA 会报失败。 |
| parallel(N) | 加载数据的并行度,必填项,取值是大于 1 的整数。 |
示例
说明
下面的示例是从服务器端文件导入数据的方法。OceanBase 数据库 LOAD DATA 语句旁路导入数据还支持加载本地文件(LOCAL INFILE)的方式。更多有关 LOAD DATA LOCAL INFILE 的示例信息,请参见 使用 LOAD DATA 语句导入数据
登录到要连接 OBServer 节点所在的机器,在
/home/admin目录下创建测试数据。说明
OceanBase 数据库中的
LOAD DATA语句仅支持加载 OBServer 节点本地的输入文件。因此,需要在导入之前将文件拷贝到某台 OBServer 上。[xxx@xxx /home/admin]# ssh admin@10.10.10.1 [admin@xxx /home/admin]# vi tbl1.csv 1,11 2,22 3,33设置导入的文件路径。
设置系统变量
secure_file_priv,配置导入或导出文件时可以访问的路径。注意
由于安全原因,设置系统变量
secure_file_priv时,只能通过本地 Socket 连接数据库执行修改该全局变量的 SQL 语句。更多信息,请参见 secure_file_priv。登录到要连接 OBServer 节点所在的机器。
[xxx@xxx /home/admin]# ssh admin@10.10.10.1执行以下命令,通过本地 Unix Socket 连接方式连接租户
mysql001。obclient -S /home/admin/oceanbase/run/sql.sock -uroot@mysql001 -p******设置导入路径为
/home/admin。obclient [(none)]> SET GLOBAL secure_file_priv = "/home/admin"; Query OK, 0 rows affected
重新连接数据库后,使用
LOAD /*+ APPEND */ DATA语句导入数据。obclient [test]> CREATE TABLE tbl1(col1 INT PRIMARY KEY,col2 INT); Query OK, 0 rows affected obclient [test]> SELECT * FROM tbl1; Empty set obclient [test]> LOAD DATA /*+ direct(true,1024) parallel(16) */ INFILE '/home/admin/tbl1.csv' INTO TABLE tbl1 FIELDS TERMINATED BY ','; Query OK, 3 rows affected Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 obclient [test]> SELECT * FROM tbl1; +------+------+ | col1 | col2 | +------+------+ | 1 | 11 | | 2 | 22 | | 3 | 33 | +------+------+ 3 rows in set
相关文档
- 更多有关使用
LOAD DATA语句的示例信息,请参见 使用 LOAD DATA 语句导入数据。 - 更多有关连接数据库的详细信息,请参见 连接方式概述。
- 更多有关删除表的信息,请参见 删除表。