在实际项目中,我们经常会使用 YashanDB 提供的 yasldr 工具来批量导入数据。普通字段的导入相对简单,但当涉及到 CLOB、BLOB 等大字段(LOB)时,很多用户容易困惑:什么是 lls 模式?什么是 lobfile 模式?这两者又有何区别?

本文将结合实例为你详细拆解三种 LOB 导入方式,帮助你快速掌握使用方法。

一、常见问题场景

使用 yasldr 导入 .csv 文件,发现 LOB 类型字段导入报错;

不清楚 LLS 和 lobfile 模式的区别,文件准备方式不一致;

批量导入大字段数据时性能较差或不稳定,文件组织结构混乱。

二、三种 LOB 数据导入方式详解

方式一:LLS 模式(Lob Location Specifier)

核心原理:

在 .csv 文件中不直接写 LOB 数据内容,而是指定它在某个 .dat 文件中的偏移位置与长度。

文件准备示例:

CSV 文件内容:

1.LOB_FILE.dat.1.2/
2.LOB_FILE.dat.3.3/
LOB_FILE.dat 文件内容(示例):

abcdeabcdeabcdeabcdeabcdefabcaab
语法说明:

filename.ext.nnn.mmm/ 格式说明:

filename.ext:存放 LOB 数据的文件名;

nnn:起始字节偏移位置(输入 1 表示从第 0 字节开始);

mmm:要读取的字节长度;

/:必须存在,用于标识结束。

示例导入命令:

LOAD DATA OPTIONS (degree_of_parallelism=3)
INFILE '/home/yasdb/load_lls.csv'
INTO TABLE sqlldr_lob(c1. c2 LLS);
特点:

所有 LOB 数据集中保存在一个 .dat 文件中;

CSV 文件只负责“指向”;

适合大批量数据、结构紧凑、磁盘使用效率高;

注意:偏移量计算时需要考虑换行符等隐含字符。

方式二:lobfile 模式

核心原理:

每条 LOB 数据单独存放在一个 .dat 文件中,通过 CSV 文件的伪列引用。

文件准备示例:

CSV 文件内容:

1.LOB0000/00000000_0001.dat
2.LOB0000/00000000_0002.dat
每个 .dat 文件内容:

00000000_0001.dat:aaaasa

00000000_0002.dat:bbbbb

示例导入命令:

LOAD DATA
INFILE '/home/yasdb/load_lobfile.csv'
INTO TABLE sqlldr_lob(
col1.
file1 filler,
col2 lobfile(file1) terminated BY eof
);
特点:

每条 LOB 数据一个独立文件;

CSV 文件负责记录映射路径;

更直观,便于单条数据重试或排错;

适合数据量不大或数据需频繁变更的场景;

注意:文件数量会非常多,可能带来文件系统压力。

方式三:直接在 CSV 中写入 LOB 字段内容

示例 CSV:

1.这是一段内容

2.另一个大字段

3.abcdef123456

限制:

单个字段最大不能超过 32K 字节;

不支持二进制 BLOB 类型;

适用于 LOB 字段内容非常短的场景。

三、三种模式对比一览
image.png

四、总结建议

如果数据量大且结构规范,推荐使用 LLS 模式,性能与磁盘占用最优;

如果数据需频繁更新、追溯,使用 lobfile 模式更方便;

小字段数据可直接放入 CSV,但不适合规模化使用;

导入前需确保字符集匹配、路径正确、换行控制合理,否则易报错。


数据库砖家
1 声望0 粉丝