Я новичок в базе данных informix. Я хочу знать, как вставить столбец типа blob и clob в informix. Мне нужен пример запроса для этих двух типов столбцов. Если кто поможет, буду признателен...
как вставить столбец blob или clob в informix
comment
Какой язык программирования и какую привязку/библиотеку вы используете?
- person BlackJack   schedule 20.03.2015
comment
См. Как записать двоичный двоичный объект на диск в Informix для выбора части ответа: см. Операции с данными больших двоичных объектов в Informix для получения некоторой информации о других функциях, которые могут помочь. Вам нужно указать язык программирования и привязку, которую вы планируете использовать; ответы для ESQL/C отличаются от ODBC, JDBC,...
- person Jonathan Leffler   schedule 20.03.2015
Ответы (1)
Это мой код Jython, который использует JDBC и подготовленные операторы для проверки INSERT
и SELECT
из blob
из базы данных Informix:
#!/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)
person
Michał Niklas
schedule
24.03.2015