Вставьте блоб в базу данных Oracle с помощью Perl - PullRequest
0 голосов
/ 27 сентября 2011

Возможно ли это вообще? Я видел ссылки в сети, указывающие на то, что хранимая процедура должна использоваться, но у меня есть скрипт, который должен вставлять сжатые данные в БД. Как я могу пойти по этому поводу, если вообще? Thx

Ответы [ 2 ]

11 голосов
/ 27 сентября 2011

Вам необходимо использовать модуль DBD :: Oracle,

use DBD::Oracle qw(:ora_types);

, и когда вы связываете параметры, не забудьте указать ora_type

$sth = $dbh->prepare("insert ...");
$sth->bind_param($field_num, $lob_value, { ora_type => ORA_LOB });
$sth->execute

Значение $ lob_valueскалярная переменная с содержимым вашего файла.

0 голосов
/ 09 июня 2018

Я не смог заставить пример Мигеля работать, так как моя установка Perl не имела оракула типа ORA_LOB.Вот пример, который работает для меня.

Для краткости я использую жестко закодированные значения и внутренние подпрограммы БД, поэтому вам, очевидно, потребуется интегрировать код в вашу среду.

use strict;
use DBI;
use DBD::Oracle qw(:ora_types);
require "lib.pl";    #contains getDBConnection() and myExit()

our $dbh = getDBConnection();

my $lob_value;
open FILE, "D:/Inet/wwwroot/tmpcharts/data.xls" or myExit("Failed to open input file: $!\n");
binmode FILE;
$lob_value .= $_ while(<FILE>);
close FILE;

my $sth = $dbh->prepare("update x_trl_test_files set doc=? where file_id=6");
$sth->bind_param(1, $lob_value, { ora_type => ORA_BLOB });
$sth->execute;
$dbh->commit;

myExit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...