[Cascavel-pm] Compartilhar conexão DBD::Oracle entre processos (usando XML::Twig)
Joenio Costa
joenio em gmail.com
Quinta Abril 5 14:28:29 PDT 2007
Olá Pessoal,
Preciso analisar um XML e gravar os seus dados num banco Oracle, estou
utilizando XML::Twig com parametro twig_handlers para fazer o parser
do XML. O XML tem aproximadamente 35 MB e isto iria consumir muita
memória caso eu não utilize o parametro twig_handlers. Não encontrei
na documentação do XML::Twig mas notei que ao utilizar esse parametro
é criado um processo filho, e é isto que esta causando problemas com
minha conexão com o Oracle.
Eu obtenho o seguinte erro ao executar algo parecido com o exemplo abaixo:
DBD::Oracle::db disconnect failed: ORA-03113: end-of-file on
communication channel (DBD ERROR: OCISessionEnd)
--------
use DBI;
use XML::Twig;
my $dbh = DBI->connect('dbi:Oracle:database', 'user', 'pass');
my $sth = $dbh->prepare("
INSERT INTO table (col1, col2, col3)
VALUES (123, ?, ?)
");
my $twig = XML::Twig->new(
twig_handlers => { PIT => sub {
my ($t, $product) = @_;
my $descricao = $product->first_child('pitName')->att('name');
my $preco = $product->first_child('pitPrice')->att('price');
$sth->bind_param(1, $descricao);
$sth->bind_param(2, $preco);
$sth->execute();
$sth->finish();
$t->purge;
}}
);
$twig->parseurl('file:///home/joenio/data/produtos.xml');
$twig->purge;
$dbh->disconnect();
-----
Alguem já enfrentou situação parecida?
Obrigado,
--
Joenio Costa
- Salvador Perl Mongers - Grupo de Usuário Perl de Salvador
- Colibre - Cooperativa de Tecnologias Livres
- PSL-BA - Projeto Software Livre Bahia
Mais detalhes sobre a lista de discussão Cascavel-pm