informix插入text类型和blob、clob类型数据
一、 text类型插入
前提条件(byte类型也一样只不过数据内容是十六进制)
- 准备好一个文本文件,内容用 | 符号分割(分割是指每个字段的内容,下面是我的txt文件内容,主要有两个字段id,content(text类型))
23| -- 这就代表一个字段 id
test -- 这代表第二个字段内容 content 以此类推
- 文件内容不能有开始和结束的空白
- 语法(将sql写好以后保存为一个sql文件)
load from 'C:\users\test.txt' -- 这是文件路径
insert into all_type(id,content);
- 在informix 你要插入的服务器实例的命令行执行这个sql文件,我的schema是test_db;
dbaccess test_db < 'C:\users\load.sql'
byte插入的时候要去除十六进制前面的0x,要不然插入报错“不是规范的十六进制”
二、blob\clob 类型数据插入
1.语法
insert into all_type(id,blob) values (24,filetoblob('C:\users\a.png','server'))
2 filetoblob(lvarchar,char)这是一个数据自带的函数,返回值是一个blob,blob类型主要是保存图片类型数据的,所以我第一个参数是图片路径,第二个参数‘server’,官方文档对这个函数的解释是从a.png文件中创建一个 blob值;那个server应该就是创建的blob值了,我的理解是这样的。
- 执行sql,如果你没有为当前的服务器实例设置sbspace会报错
invalid default sbspace name(sbspace) - 解决方法:在当前服务器实例的命令行 执行以下语句
onspaces -c -S sbspace2 -p D:\informix\test.dbs -o 100 -s 2000 -Df " LOGGING=ON"
- 首先要创建test.dbs这个文件,文件名一般是服务器名,文件类型是.dbs,然后到/informix/etc
文件夹下找到ONCONFIG.test这个文件,进去修改SBSPACENAME 为sbspace2 保存后重启数据库
(我当时把SYSSBSPACENAME 也改为sbspace2 了,按理说是不需要改的) - 重启之后继续执行sql就没问题了