【YashanDB知识库】如何使用yasldr导入lob类型?
问题现象
在各个项目实施中,有时候会使用到yasldr工具进行csv数据的导入。关于yasldr一般的使用方法,官方文档已经有详细的介绍,具体可见:yasldr使用指导。但在涉及LOB类型的导入时,会有一些疑问,比如什么是lls模式、什么是lobfile模式等等。本文就关于如何使用yasldr导入lob类型做进一步说明,帮助大家理解。
问题的风险及影响
无风险
问题影响的版本
历史版本~23.2
问题发生原因
使用yasldr导入时,存在lob字段,往往需要多做一些处理。
33 解决方法及规避方式
不需要规避
问题分析和处理过程
背景假设
假设有一表table,表结构如下
table (C1 INT, C2 CLOB)
导入模式
三种导入方式。lls模式、lobfile模式和直接导入。
lls模式
LLS(Lob Location Specifier)模式,通过指定LLS关键词选择该导入模式。该模式选取数据文件的部分内容进行导入,且可指定从任意位置和任意长度开始导入。
指定了LLS关键字的目标表列字段映射的导入文件数据列格式需为filename.ext.nnn.mmm/:
filename.ext 为包含LOB或XMLTYPE数据的文件名称。
nnn 是文件中LOB数据的字节的偏移,仅允许为整数,且偏移量不允许超过数据文件大小且不允许为负数。
- 当输入偏移量的值为正数时,实际偏移量 = 输入值 - 1。
- 值为0时,实际偏移量 = 0。
- 值为负数时返回错误。
mmm 是字节中的LOB或XMLTYPE的长度,仅允许为整数。值为-1时表示null,为0时表示导入一个空LOB或空XMLTYPE,不允许将其指定为小于-1的值。
正斜杠(/)为终止字符,格式中必须包含该字符,否则报错。
--自行创建load_lls.csv文件,文件位于/home/yasdb目录下,内容假设为:
1,LOB_FILE.dat.1.2/
2,LOB_FILE.dat.2.3/
--于该目录下创建LOB_FILE.dat文件,内容假设为:
abcde
--LOB_FILE.dat.1.2/ 表示 导入文件列数据为 LOB_FILE.dat.1.2/,意为从LOB_FILE.dat文件的偏移为0的位置为起始,截取长度为2的数据内容进行导入,正斜杠表示终止。
--LOB_FILE.dat.2.3/ 表示 导入文件列数据为 LOB_FILE.dat.2.3/,意为从LOB_FILE.dat文件的偏移为1的位置为起始,截取长度为3的数据内容进行导入,正斜杠表示终止。
--导入命令为:
LOAD DATA OPTIONS (degree_of_parallelism=3) INFILE 'home/yasdb/load_lls.csv' INTO TABLE sqlldr_lob(c1, c2 LLS);
辅助理解:
lls导入lob的数据是需要完整放在一个.dat里的,比如:
abcde
abcde
abcde
abcde
abcdef
abc
a
ab
在导入数据时,INFILE指的是一张表的csv数据,其中lob字段的数据通过 filename.ext.nnn.mmm/ 这样的格式来指定。比如:(以上面的示例数据为例)
"1","LOB_FILE.dat.1.5/"
"2","LOB_FILE.dat.7.5/"
"3","LOB_FILE.dat.13.5/"
"4","LOB_FILE.dat.19.5/"
"5","LOB_FILE.dat.25.6/"
"6","LOB_FILE.dat.32.3/"
"7","LOB_FILE.dat.36.1/"
"8","LOB_FILE.dat.38.2/"
在导入时指定列为lls即可识别 c2 LLS,这里注意一个点:在计算偏移量的适合要考虑换行符的存在。
LOAD DATA OPTIONS (degree_of_parallelism=3) INFILE 'home/yasdb/load_lls.csv' INTO TABLE sqlldr_lob(c1, c2 LLS);
lobfile模式
该模式下通过引用FILLER伪列指向的LOB或XMLTYPE数据文件,将整个文件导入至目标表指定的列中
--需要导入的csv数据文件:
"1","LOB0000/00000000_0001.dat"
"2","LOB0000/00000000_0002.dat"
"3","LOB0000/00000000_0003.dat"
--00000000_0001.dat 里的一行或者一个clob类型的数据 也就是一个lob数据一个文件
aaaasa
--00000000_0002.dat 里的一行或者一个clob类型的数据
bbbbb
--00000000_0003.dat里的一行或者一个clob类型的数据
cccccc
--导入命令
LOAD DATA INFILE 'home/yasdb/load_lls.csv' INTO TABLE sqlldr_lob(col1,file1 filler,col2 lobfile(file1) terminated BY eof);
导入命令理解
col1,file1 filler,col2 lobfile(file1)
col1是第一列的int,file1是一个伪劣的名字,filler关键字说明了这一列是伪列。col2 lobfile(file1)表明col2 列才是表中真实存在的列,其用lobfile导入。col2和file1列是一种映射关系。
辅助理解
lobfile模式就是一行lob数据就存一个.dat文件,如果有1kw行,那就是1kw个.dat文件。然后在导入的csv文件里 用代表这一行lob数据的 .dat文件来占位即可。比如:
"1","/00000000_0001.dat"
lls和lobfile区别
lls模式和lobfile模式的区别就是前者只有一个.dat文件来存放lob数据,在csv中通过偏移量的计算来指定每行需要导入的lob数据。后者就是一个lob数据就是一个.dat文件,1百万行数据那就是有1百万个.dat文件,在csv中直接在lob列指定对应的.dat类型即可。
直接导入
可以直接在csv中对应列放lob数据导入。比如:
"1","asdasdasfdfgasdasd"
"2","sdasdfafgadggfg"
"3","3124sasasasd"
.....
限制:单个字段不超过32K
【YashanDB知识库】如何使用yasldr导入lob类型?的更多相关文章
- LOB类型的学习、总结
LOB相关的概念 LOB类型: 将信息文件(十进制.二进制).图像甚至音频信息采用数据库作为保存载体时,就需要使用lob类型数据. 有两种Lob,Internal Lob和External Lob.I ...
- 转换CLOB字段类型为VARCHAR2, lob类型不支持的sql语句
转自:https://blog.csdn.net/e_wsq/article/details/7561209 步骤: 1.建立一个临时varchar2字段用来保存数据 2.将clob的内容截取后更新到 ...
- 移动lob类型索引到指定表空间
WWWNEWSAD 为表名 USERS 为原表空间 CONTENT 为lob类型的字段 DATA_INDEX_WXZJ 指定的表空间 ALTER TABLE WWWNEWSAD MOVE TABLES ...
- Oracle LOB类型
一.Oracle中的varchar2类型1.我们在Oracle数据库存储的字符数据一般是用VARCHAR2.VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Dat ...
- oracle--导出、导入blob类型的字段
blob是oracle中的一个数据类型,保存的是压缩后的二进制形式的大数据. 数据迁移如果涉及到blob字段,都不好处理,因为无法用常规方法进行操作,如:使用select查看该字段,也无法用inser ...
- oracle中 lob类型
LOB大型对象(大数据字段类型) 分为:-BLOB: Binary 二进制大型对象 ,适用于存非文本型数据(程序,图像,影音) -CLOB:Character 字符型大型对象,适用于存储文本型数据( ...
- 写入和读取LOB类型的对象
====写入数据============ create or replace procedure addWaterFallis directions clob; amount binary_integ ...
- 如何在R中导入不同类型的数据
这个表格是我在datacamp学习R导入文件的课程的归纳 遇到的问题及解决方法(环境: Rv3.2.5,win7,32位) 1. 使用gdata中的read.xls时提示找不到Perl路径 >l ...
- 导入Excel 类型的数据
thinkphp 访问此控制方法就可以导入了 //数据导入 public function impUser(){ if (!empty($_FILES)) { $upload = new \Think ...
- MYSQL导入csv类型的数据出现The MySQL server is running with the --secure-file-priv option
今天尝试使用 into outfile导出数据的时候出现错误: The MySQL server is running with the --secure-file-priv option so it ...
随机推荐
- microsoft office object版本对应offices版本
1997年 Excel 97 Microsoft Excel 8.0 1999年 Excel 2000 Microsoft Excel 9.0 2001年 Excel XP Microsoft Exc ...
- 个人使用 sudo 方法
sudo 作用:允许 系统管理员 授予某些用户或用户组以 其他用户身份 运行某些或所有命令的权限 su 用于变更为其他使用者的身份的命令,一般需要键入该使用者的密码 sudo 则是对 su 使用的简化 ...
- Django 处理http请求之使用session
Django 处理http请求之使用session by:授客 QQ:1033553122 欢迎加入全国软件测试交流群:7156436 测试环境 Win7 Django 1.11 Django提供 ...
- redis实现分片集群
为什么要使用分片集群? 主从和哨兵可以解决高可用.高并发读的问题.但是仍存在海量数据存储.高并发写问题 分片集群特征: 集群中有多个master,每个master保存不同数据. 为master置备了后 ...
- lambda表达式用法
(参数列表)->{代码块}; (int a,int b)->{return a+b;}; 本质为匿名函数 参数的类型可以省略: (a,b)->{return a+b;} 当参数只有一 ...
- docker nginx容器的均衡负载
创建三个docker容器以实现nginx的负载均衡 编写nginx的dockfile [root@docker nginx]# cat Dockerfile FROM nginx RUN echo ' ...
- sqoop 从数据库导入数据到hdfs
前提 配置hadoop配置文件 前提 启动hadoop 配置hive 改名进入sqoop/conf 增加环境变量 tar xf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz ...
- 【BatchProgram】 读取文本批量创建目录
NameList.txt文件内容 FILE-NAME-A FILE-NAME-B FILE-NAME-C ... 根据上面文件批量创建对应的目录,且附加序号 CMD代码: @ECHO OFF SETL ...
- 【Maven】概念知识
怎么在Windows安装Maven https://www.cnblogs.com/mindzone/p/12701416.html 学到一个新的指令:查看相对系统变量 echo %XXX_HOME% ...
- Webots —— 好用的人形机器人仿真平台
相关: https://cyberbotics.com/doc/guide/tutorials 下载地址: https://github.com/cyberbotics/webots/releases ...