处理大数据类型
二进制类型
二进制数据可以使用大对象特性以一种特殊的格式将二进制数据存储在一个独立的表中, 然后通过在表中保存一个类型为 OID 的值来引用该表。以下为该方法的使用示例。
使用OID存储
1、创建表
conn:execute("create table lo_test_tab (name text, img oid)")
2、导入数据
该步骤会将操作系统文件“image”导入成一个大对象并生成一个oid,查询lo_test_tab表时则显示oid。
conn:execute("insert into lo_test_tab values('beautiful image', lo_import('/tmp/image'))")
3、导出数据
该操作将数据库中存储的大对象导出到一个操作系统文件。
conn:execute("select lo_export(lo_test_tab.img, '/tmp/image-bak') from lo_test_tab where name = 'beautiful image'")
字符类型
Vastbase G100中TEXT类型与VARCHAR类型都是可变长的字符类型,区别在于VARCHAR类型通过VARCHAR(n)中的n来限制最大长度,而TEXT类型没有。TEXT类型与VARCHAR类型几乎没有性能差别,TEXT类型最多可存储1G数据 。
使用TEXT类型存储数据时,可用以下方式来进行读写。
1、 创建表
conn:execute("create table images (id int, msg text)")
2、插入数据
conn:execute(string.format("insert into images values(1, '%s')","the text data"))
3、读取数据
cur = conn:execute("select msg from images where id = 1")
row = cur:fetch({}, "a")
print(row.msg)