首批通过分布式安全可靠测评,为关键业务系统打造
LOAD_FILE
更新时间:2026-06-19 14:18:11
描述
LOAD_FILE 函数基于外表接口,本地读取外部存储文件到数据库内。支持读取本地文件、HDFS、OSS、COS 和 S3 接口的文件。
使用前需先通过 CREATE LOCATION 创建 Location 对象,并在调用时指定 Location 名称与文件名。
语法
LOAD_FILE(location_name, file_name)
参数说明:
| 参数 | 描述 | 类型 | 是否可空 |
|---|---|---|---|
| location_name | 外部存储文件的名称。 | VARCHAR(128) | Yes |
| file_name | 外部存储文件的文件名。 | VARCHAR(4096) | No |
如果 location_name、file_name 参数中有一个为 NULL 时,则输出为 NULL。
返回值:
- BLOB 类型的数据,外部存储文件的内容。
注意事项
表达式类型与可见性
- 在
SELECT列表等表达式上下文中调用时,与本文档中LOAD_FILE(location_name, file_name)的语义相同。 - 不可用于生成列。
错误与边界行为
| 场景 | 行为 |
|---|---|
location_name 或 file_name 为空串 |
报错 OB_INVALID_ARGUMENT。 |
| Location 不存在 | 报错 OB_LOCATION_OBJ_NOT_EXIST。 |
| 当前会话对 Location 无读权限 | 报错(权限校验失败)。 |
| 文件不存在 | 报错 OB_OBJECT_NAME_NOT_EXIST。 |
| 文件大小为 0 | 报错 OB_INVALID_DATA(视为无效文件)。 |
文件大小超过 document_ai_file_max_size |
报错 OB_NOT_SUPPORTED。 |
配置项与场景约束
LOAD_FILE 需通过配置项约束和场景约束来确保安全性和稳定性。
使用 LOAD_FILE 表达式读取外部文件时,受以下两个配置项共同约束,以保证外部文件大小可控。实际允许读取的最大文件大小为两者中的较小值,即 有效最大文件大小 = min(max_allowed_packet, document_ai_file_max_size)
具体配置项信息如下:
| 配置项 | 作用范围 | 默认值 | 取值范围 | 单位 | 说明 |
|---|---|---|---|---|---|
| max_allowed_packet | 全局网络包大小限制。 | 16,777,216(16 MB) | [1048576, 1073741824](1 MB ~ 1 GB) | 字节(Byte) | 控制数据库与外部(包括客户端、其他 OceanBase 数据库节点等)所有交互数据包的最大大小。任何单次传输的数据(含 LOAD_FILE 读取的文件内容)不得超过此值。 |
| document_ai_file_max_size | LOAD_FILE 专用文件大小限制。 |
100 MB | [0, 500MB] | 字节(Byte) | 用于限制 LOAD_FILE 函数一次处理的文件最大大小,设为 0 表示禁止使用 LOAD_FILE 读取文件。 |
示例
读取本地文件(<= 16MB)
-- 配置 Location 路径 CREATE OR REPLACE LOCATION local_data URL = 'file:///home/'; -- 读取本地文件 SELECT load_file('local_data', 'test_16MB.pdf');读取本地文件(50MB)
-- 配置 max_allowed_packet 大小为 100MB SET GLOBAL max_allowed_packet=104,857,600; -- 读取本地文件 select load_file('load_file', 'test_50MB.pdf');读取 OSS 文件
CREATE LOCATION oss_t URL = 'oss://dir' CREDENTIAL = ( ACCESSID = '123' ACCESSKEY = '456' HOST = '789' ); -- 读取 OSS 文件 SELECT load_file('oss_t', 'test_oss.pdf');读取 HDFS 文件
CREATE LOCATION hdfs_user URL = 'hdfs://namenode:8020/' CREDENTIAL ( USER = 'hdfs_user_name' ); -- 读取 HDFS 文件 SELECT load_file('hdfs_user', 'test_hdfs.pdf');
相关文档
- 创建与管理 Location 对象,参见 CREATE LOCATION、ALTER LOCATION、DROP LOCATION。
- document_ai_file_max_size。
- 与 AI 函数服务的配合使用,参见 AI 函数服务概述。