如何在 informix 中插入 blob 或 clob 列
Posted
技术标签:
【中文标题】如何在 informix 中插入 blob 或 clob 列【英文标题】:how to insert blob or clob column in informix 【发布时间】:2015-03-20 14:17:01 【问题描述】:我是 informix 数据库的新手。我想知道如何在informix 中插入blob 和clob 类型的列。我需要这两种类型的列的示例查询。如果有人提供帮助,我将不胜感激...
【问题讨论】:
您使用哪种编程语言和绑定/库? 请参阅How to write a binary blob onto disk in Informix 以获取答案的选择部分:请参阅Operations on blob data in Informix 以获取有关其他功能的帮助信息。您确实需要指定您计划使用的编程语言和绑定; ESQL/C 的答案不同于 ODBC、JDBC、... 【参考方案1】:这是我的 Jython 代码,它使用 JDBC 和准备好的语句来测试来自 Informix 数据库的 INSERT
和 SELECT
和 blob
:
#!/usr/bin/env jython
# -*- coding: utf8 -*-
import time
from java.sql import DriverManager
from java.lang import Class
from java.io import FileInputStream
from java.io import ByteArrayOutputStream
Class.forName("com.informix.jdbc.IfxDriver")
"""
create table _blob_test_so (
id serial,
txt varchar(30),
column_blob blob
);
"""
def test_blob_insert(db):
print('inserting gif picture into blob table...')
blob = FileInputStream('snoopy_comics20121023.gif')
insert_stmt = db.prepareStatement("INSERT INTO _blob_test_so (txt, column_blob) VALUES (?, ?)")
insert_stmt.setString(1, 'test %s' % (time.strftime('%Y-%m-%d %H:%M:%S')))
insert_stmt.setBinaryStream(2, blob)
rec_cnt = insert_stmt.executeUpdate()
blob.close()
insert_stmt.close()
print('records changed: %d' % (rec_cnt))
def test_blob_select(db):
print('selecting data from blob table...')
pstm = db.prepareStatement("SELECT id, txt, column_blob FROM _blob_test_so")
rs = pstm.executeQuery()
while (rs.next()):
id = rs.getInt(1)
txt = rs.getString(2)
image_stream = rs.getBinaryStream(3)
fout = ByteArrayOutputStream()
while 1:
b = image_stream.read()
if b < 0:
break
fout.write(b)
arr = fout.toByteArray()
fname_out = 'test_%s.gif' % (id)
print('%d:%s: fname: %s %d [b]' % (id, txt, fname_out, len(arr)))
f = open(fname_out, 'wb')
f.write(arr)
f.close()
rs.close()
db = DriverManager.getConnection('jdbc:informix-sqli://test-informix:9088/test:informixserver=ol_testifx;DB_LOCALE=pl_PL.CP1250;CLIENT_LOCALE=pl_PL.CP1250;charSet=CP1250', 'user', 'passwd')
test_blob_insert(db)
test_blob_select(db)
【讨论】:
以上是关于如何在 informix 中插入 blob 或 clob 列的主要内容,如果未能解决你的问题,请参考以下文章
在 Informix 10 中检索或删除带有 blob 的行