Вставка больших объёмов данных в БД
От: Andrey01  
Дата: 04.09.04 09:23
Оценка:
Используется база данных DB2.
При запросе insert больше 32К выдаёт ошибку (то-ли БД, то-ли ОС не позволяет больше).

По докам такой insert с большими полями можно сделать через хост переменные.
если не ошибаюсь, в Perl это можно через bind_param_inout() или bind_param()

Делаю:

(Perl)
...
my $attrib_clob = {
ParamT => DBD::DB2::SQL_PARAM_INPUT,
Ctype => DBD::DB2::SQL_C_CHAR,
Stype => DBD::DB2::SQL_CLOB,
Prec => 50000,
Scale => 0,
};
my $sth=$dbh->prepare("INSERT INTO table1 (content_message) values (?)");
$bind_value = 'Размером больше 32К ...';
$sth->bind_param_inout(1, \$bind_value, 100000, $attrib_clob);
...

Ошибка "The value of a host variable in the EXECUTE or OPEN statement is too large for its corresponding use"

Пробовал через файл
$bind_value='file1.txt';
$sth->bind_param(1, $bind_value, $DBD::DB2::attrib_clobfile);

такая-же ошибка. (поле в таблице clob(50K))

Возможно с типами данных в $attrib_clob что-то неверно?

Вопрос:
Подскажите пожалуйста, как вставить большой объём данных в поле? Правильно-ли вообще через bind_param, как ещё обратитьсяк хост-переменным?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.