[Salvador-pm] Fwd: Problema
Allisson Andrade Lima
allissonlima1 em gmail.com
Quinta Agosto 28 07:02:22 PDT 2014
Hernan e Joenio,
Executei o código com o Data::Printer e foi retornado o
valor "\0\0\0\0\0\0\0" na variável nos casos de campos NULL. Pelo menos já
é uma luz... hehehehe.
Segue abaixo a subrotina em questão para que vocês possam dar uma olhada.
Ela ainda está crua, pois como emperrei nesse problema, fiquei
exclusivamente nele.
sub insereMy {
my ($procedure,$database,$table) = @_;
my ($coluna, $dado, $camposSql, $valuesSql, $querySql,
$querySqlTrunc, $i, @tipoCampos, @row, @result);
if(!defined($procedure) or !defined($database) or !defined($table)
or ($procedure eq "") or ($database eq "") or ($table eq "")){
print "Favor informar todos os parâmetros!\n";
print "P1: PROCEDURE\n";
print "P2: BANCO DESTINO!\n";
print "P3: TABELA DESTINO!\n";
return 0;
}elsif(defined($procedure) or defined($database) or
defined($table)){
&conexaoTcf("$procedure");
$querySqlTrunc = "TRUNCATE TABLE $table;";
&conexaoMysql("$database", "$table", "$querySqlTrunc");
$camposSql = join ", ", @{$dbResultDb2->{NAME}};
for($coluna = 0; $coluna < $tCampos; $coluna = $coluna + 1){
$tipoCampos[$coluna] =
$dbResultDb2->{TYPE}->[$coluna];
}
while(@row = $dbResultDb2->fetchrow_array) {
$valuesSql = "";
for($coluna = 0; $coluna < $tCampos; $coluna =
$coluna + 1){
print "Tamanho:
".length($row[$coluna])."\n";
p $row[$coluna];
if (!$row[$coluna]){
$dado = 'NULL';
}else{
if (($tipoCampos[$coluna] == 3 or
$tipoCampos[$coluna] == 6 or $tipoCampos[$coluna] == 7) and
(defined($row[$coluna]))){
$dado = $row[$coluna];
$dado =~ s/[,]/./;
}else{
$dado = $row[$coluna];
}
}
}
$result[$coluna] = $dado;
#print "Dado: ".$dado;
#print "\n";
#print "Row: ".$row[$coluna];
#print "\n";
}#FIM FOR COLUNA
###Monta valores para insert
for($coluna = 0; $coluna < $tCampos; $coluna =
$coluna + 1){
$valuesSql =
$valuesSql.'"'.$result[$coluna].'",';
}
###Retira a virgula do ultimo valor
$valuesSql =~ s/,+$//;
$querySql = "insert into $table ($camposSql)
values ($valuesSql);";
&conexaoMysql("$database", "$table", $querySql);
}#FIM WHILE
$dbResultDb2->finish();
}#FIM ELSEIF
}#FIM SUBROTINA
Em 27 de agosto de 2014 18:56, Hernan Lopes <hernanlopes em gmail.com>
escreveu:
> Alisson,
>
> Pode mostrar o código que você está usando ?
> Está usando DBIx::Class ?
> ou DBI puro ?
>
> de qualquer maneira, não sei se vc está usando mas caso não esteja pode
> tentar usar o Data::Printer pra debugar teu problema...
>
> perl -e 'use Data::Printer; my @bla = (qw|aa bb cc|); warn p @bla;'
>
>
>
>
>
>
> 2014-08-27 18:15 GMT-03:00 Allisson Andrade Lima <allissonlima1 em gmail.com>
> :
>
>> Olá,
>>
>> Gostaria de compartilhar e tentar identificar a causa de um problema que
>> estou passando em um Script que estou escrevendo em Perl.
>>
>> Este Script realiza a execução de uma Stored Procedure em um banco DB2 e
>> importa os dados para um banco Mysql. Realizo um fetcharray e vou
>> percorrendo linha a linha, tratando as colunas e adicionando em um array. O
>> problema é que caso haja um campo NULL no resultado eu não tenho um retorno
>> undef. A variável inicialmente não possui valor, mas caso eu faça um length
>> eu tenho um retorno com um valor acima de zero, logo ela também não fica
>> undef.
>>
>> Com esse problema eu não estou conseguindo tratar esses casos para campos
>> com valor nulo. Gostaria que alguém me ajudasse caso saibam o que pode
>> estar acontecendo.
>>
>> Fico feliz pela ajuda,
>>
>> Allisson Lima
>>
>> _______________________________________________
>> Salvador-pm mailing list
>> Salvador-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/salvador-pm
>>
>>
>
> _______________________________________________
> Salvador-pm mailing list
> Salvador-pm em pm.org
> http://mail.pm.org/mailman/listinfo/salvador-pm
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/salvador-pm/attachments/20140828/dc092516/attachment-0001.html>
Mais detalhes sobre a lista de discussão Salvador-pm