Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Dmitry Dmitriev                      2:5047/43.1    13 Mar 2001  12:21:17
 To : vlada@dios.ru
 Subject : Re: Blob + perl
 -------------------------------------------------------------------------------- 
 
 Hello vlada@dios.ru.
 On Mon, 12 Mar 2001 14:43:02 +1100, vlada@dios.ru wrote:
 
 vdr> Hе подскажете, как можно, с помощью скрипта, затащить картинку в базу.
 vdr> Буду благодарен за короткий примерчик...
 
   Вот этот скрипт вбивает в базу (PostgreSQL) картинки,
   лежащие заууюканными в файле 'los.back'.
   Ежели нужен и обратный скрипт -- пиши, есть :)
 
 ====
 #!/usr/bin/perl -w
 
 use strict;
 use DBI;
 
 my $dbname = "xxxxxx";
 my $user = "xxx";
 my $infile = "los.back";
 
 restpict('g_picts','gp_id','picture');
 
 ######################################################################
 sub restpict {
     my ($table,$id,$picname) = @_;
     my ($select,$sth,$num,$blob_id,$blob_fd,$uue,$buf,$length);
 
     my $dbh = DBI->connect("dbi:Pg:dbname=$dbname", "$user", "", {AutoCommit =>
 0});
     $select = "UPDATE $table set $picname = ? WHERE $id = ?";
     $sth = $dbh->prepare($select);
     
     $num = -1;
 
     open (PICT, "< $infile");
     while (<PICT>) {
         if (/^begin \d\d\d \Q$table\E\-(\d+)$/) { 
       $num = $1;
       $uue = "";
       next;
   } elsif ($num == -1) {
       next;
   } elsif (/^end$/) {
       $buf = unpack("u*",$uue);
       $length = length($buf);
       $blob_id = $dbh->func(0, 'lo_creat');
       $blob_fd = $dbh->func($blob_id, 0, 'lo_open');
       $dbh->func($blob_fd, $buf, $length, 'lo_write');
           print "$blob_id lo $num in table $table size $length...\n";
           $sth->execute($blob_id,$num);
       $dbh->func($blob_fd, 'lo_close');
       $num = -1;
       next;
   }
   $uue .= $_;
     }
     close PICT;
     
 $sth->finish;                                                                  
                     
 $dbh->commit;
 $dbh->disconnect;
 
 };
 ########################################################################
 
 vdr> Заранее спасибо.
 
 /i am, ddv
 --- tin/1.4.4-20000803 ("Vet for the Insane") (UNIX) (Linux/2.2.18-1.6bc (i686))
  * Origin: -=- Wireless Remote Penguin -=- (2:5047/43.1@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Blob + perl   Vladimir Astakhov   12 Mar 2001 15:43:02 
 Re: Blob + perl   Artem Chuprina   12 Mar 2001 16:25:45 
 Blob + perl   Dmitry Ochnev   14 Mar 2001 09:31:42 
 Re: Blob + perl   Dmitry Dmitriev   13 Mar 2001 12:21:17 
Архивное /ru.perl/14672ff15781c.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional