在实际项目中,我们经常会使用 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 字段内容非常短的场景。
三、三种模式对比一览
四、总结建议
如果数据量大且结构规范,推荐使用 LLS 模式,性能与磁盘占用最优;
如果数据需频繁更新、追溯,使用 lobfile 模式更方便;
小字段数据可直接放入 CSV,但不适合规模化使用;
导入前需确保字符集匹配、路径正确、换行控制合理,否则易报错。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。