[Cascavel-pm] Sugestao - Insercao no Banco

Igor Sutton igor.sutton em gmail.com
Quinta Maio 25 06:52:02 PDT 2006


Seguem comentários:

my %table = (
>     "Variavel 1" => "T1r",
>     "Variavel 2"   => "T2r",
>     "Variavel 3" => "T3r",
> );
>
>
> $dbh = DBI->connect("DBI:mysql:$DBName",$UserName, $password) || die("Erro
> de Conexao:$DBI:errstr") ;
>
> chdir ($caminho) || die "\n *** Erro no diretorio $caminho ***";
>
> for(parse_dir(`ls -ltr`))
> {
> ($arquivo) = @$_;
>

Eu modificaria este trecho de código:

open(FH, "<$arquivo") or die("Arquivo nao encontrado");
> @table = <FH>;
> shift @table; # descarta primeira linha
> close(FH);
>
foreach(@table)
> {
>

para:

open FH, "<", $arquivo or die "Problemas para abrir o arquivo $arquivo: $!";
# Se o seu arquivo for muito grande, você não vai querer que ele
# transforme todo o conteúdo em um graaaaaaaaaande array consumindo
# toda a memória. foreach() é utilizado em contexto de array, por isso este
# comportamento.
while ($_ = <FH>) {
    next unless $. > 1;

if ($_ =~ /^\s*VARIAVEL/)
> {
>
>     if( (s#^\s*VARIAVEL-S##) or (s#^\s*VARIAVEL-B##) )
>     {
>
>
>
>      }
>      else
>      {
>

Este aqui também pode ser modificado:


> (undef,$variavel,$nome,undef,undef,undef,undef,undef,$data_arquivo,undef,$valor,$var)
> = split /\s+/, $_;
>

($nome, $data_arquivo, $valor, $var) = (split /\s+/)[1,2,8,10,11];

     $data_arquivo =~ s/(\d\d\d\d)(\d\d)(\d\d)_(\d\d)(\d\d)/$1-$2-$3 $4:00/;
>
>      if (defined $table{$variavel})
>      {
>
>         $variavel = $table{$variavel};
>
>      }
>

Creio que esteja aqui a sua dúvida, e uma possível solução, pois não lembro
se podemos utilizar placeholders em nome de colunas também:

     $update = "$variavel=$valor";
>
>      $sql="Insert into tabela1(Nome,DataHora) values($nome,$data) on
> duplicate key update $update";
>

my $query = qq/INSERT INTO TABELA1(Nome, DataHora) values (? , ?) ON
DUPLICATE KEY UPDATE ? = ?/;

my $sth = $dbh->prepare($query);
$sth->execute($nome, $data, $variavel, $valor) or warn "Problemas ao
executar SQL: ", $dbh->errstr;

    # $sth = $dbh->prepare($SQL);
>     # $sth->execute();
>      # $sth->finish();
>
>     }
>
>   }
>
> Entao pessoal esta ai!! :) desculpe se anteriormente nao postava o
> codigo.. daqui pra frente comecarei a postar!! :P
> Ajuda os companheiros tb!!
>
> :***
>
>
-- 
Igor Sutton Lopes
http://www.izut.com/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20060525/70306e48/attachment.html 


Mais detalhes sobre a lista de discussão Cascavel-pm