From joenio em gmail.com Tue Sep 9 09:51:40 2014 From: joenio em gmail.com (Joenio Costa) Date: Tue, 9 Sep 2014 13:51:40 -0300 Subject: [Salvador-pm] Fwd: Problema In-Reply-To: References: Message-ID: Oi Allisson, Conseguiu resolver o seu problema? Nos conta como você resolveu caso afirmativo... 2014-08-29 22:32 GMT-03:00 Hernan Lopes : > Alisson, > > Se esse erro acontece apenas nessa coluna, tenta definir um resultado nulo > em outra coluna, e veja se ele aparece corretamente. > Tenta executar o comando usando outra ferramenta e verifica se obtem o > mesmo resultado. > Verifica a procedure tambem. > > Assim é possível ter mais certeza que o problema não está do lado do banco > > > > 2014-08-28 11:02 GMT-03:00 Allisson Andrade Lima > : > > 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 >> 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 >>> >>> >> >> >> >> _______________________________________________ >> 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 > > -- Joenio Costa - Colivre - Cooperativa de Tecnologias Livres - Perl Brasil - Comunidade Brasileira de Usuários Perl - PSL-BA - Projeto Software Livre Bahia -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: From allissonlima1 em gmail.com Tue Sep 23 20:35:20 2014 From: allissonlima1 em gmail.com (Allisson Andrade Lima) Date: Wed, 24 Sep 2014 00:35:20 -0300 Subject: [Salvador-pm] Fwd: Problema In-Reply-To: References: Message-ID: Olá Pessoal, Desculpem a demora na resposta, mas esses últimos dias estão complicados... Consegui resolver com a ajuda do modulo Data::Printer. Com ele consegui identificar que, nos casos de campos nulos, o Perl preenchia a variável com "\0" de acordo com o tipo e tamanho. Por exemplo, uma variável de um campo do banco do tipo varchar(50), o Perl preenche com 50 "\0". Ai eu fiz as regras de filtragem e pronto. Gostaria de agradecer a todos pela ajuda! Em 9 de setembro de 2014 13:51, Joenio Costa escreveu: > Oi Allisson, > > Conseguiu resolver o seu problema? Nos conta como você resolveu caso > afirmativo... > > 2014-08-29 22:32 GMT-03:00 Hernan Lopes : > >> Alisson, >> >> Se esse erro acontece apenas nessa coluna, tenta definir um resultado >> nulo em outra coluna, e veja se ele aparece corretamente. >> Tenta executar o comando usando outra ferramenta e verifica se obtem o >> mesmo resultado. >> Verifica a procedure tambem. >> >> Assim é possível ter mais certeza que o problema não está do lado do banco >> >> >> >> 2014-08-28 11:02 GMT-03:00 Allisson Andrade Lima > >: >> >> 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 >>> 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 >>>> >>>> >>> >>> >>> >>> _______________________________________________ >>> 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 >> >> > > > -- > Joenio Costa > - Colivre - Cooperativa de Tecnologias Livres > - Perl Brasil - Comunidade Brasileira de Usuários Perl > - PSL-BA - Projeto Software Livre Bahia > > _______________________________________________ > 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: From joenio em gmail.com Tue Sep 30 07:47:35 2014 From: joenio em gmail.com (Joenio Costa) Date: Tue, 30 Sep 2014 11:47:35 -0300 Subject: [Salvador-pm] Fwd: Problema In-Reply-To: References: Message-ID: Beleza Allisson, obrigado por compartilhar conosco a solução encontrada! 2014-09-24 0:35 GMT-03:00 Allisson Andrade Lima : > Olá Pessoal, > > Desculpem a demora na resposta, mas esses últimos dias estão complicados... > > Consegui resolver com a ajuda do modulo Data::Printer. Com ele consegui > identificar que, nos casos de campos nulos, o Perl preenchia a variável com > "\0" de acordo com o tipo e tamanho. > > Por exemplo, uma variável de um campo do banco do tipo varchar(50), o Perl > preenche com 50 "\0". > > Ai eu fiz as regras de filtragem e pronto. > > Gostaria de agradecer a todos pela ajuda! > > Em 9 de setembro de 2014 13:51, Joenio Costa escreveu: > > Oi Allisson, >> >> Conseguiu resolver o seu problema? Nos conta como você resolveu caso >> afirmativo... >> >> 2014-08-29 22:32 GMT-03:00 Hernan Lopes : >> >>> Alisson, >>> >>> Se esse erro acontece apenas nessa coluna, tenta definir um resultado >>> nulo em outra coluna, e veja se ele aparece corretamente. >>> Tenta executar o comando usando outra ferramenta e verifica se obtem o >>> mesmo resultado. >>> Verifica a procedure tambem. >>> >>> Assim é possível ter mais certeza que o problema não está do lado do >>> banco >>> >>> >>> >>> 2014-08-28 11:02 GMT-03:00 Allisson Andrade Lima < >>> allissonlima1 em gmail.com>: >>> >>> 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 >>>> 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 >>>>> >>>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> 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 >>> >>> >> >> >> -- >> Joenio Costa >> - Colivre - Cooperativa de Tecnologias Livres >> - Perl Brasil - Comunidade Brasileira de Usuários Perl >> - PSL-BA - Projeto Software Livre Bahia >> >> _______________________________________________ >> 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 > > -- Joenio Costa - Colivre - Cooperativa de Tecnologias Livres - Perl Brasil - Comunidade Brasileira de Usuários Perl - PSL-BA - Projeto Software Livre Bahia -------------- Próxima Parte ---------- Um anexo em HTML foi limpo... URL: