Re: `mysql da linea di comando`
On Sat, Dec 04, 2004 at 03:46:47PM +0100, Leonardo Boselli wrote:
> Il 4 Dec 2004 alle 14:55 Mattia Dongili immise in rete
> > sembrerebbe che xargs faccia al caso tuo. Ti dovrebbe venire qualcosa
> > come: $ (mysql --batch ... | xargs echo) | mail -s 'posta!' user
> > ma poi scusa, vuoi spedire tutti i risultati della query per mail su
> > un'unica riga??
>
> no, il contrario, voglio usare i risultati della query come indirizzo, quindi
> mail -c `risultato query`
> per questo mi servivano su una sola riga ...
un'altro motivo per usare un linguaggio un po' piu' strutturato...
vediamo un po'... con un po' di copia e incolla (o cat e grep ^__^) dai
perldoc (ah, io ho solo un postgres qui):
--- 8< --- 8< --- 8< --- 8< --- 8< ---
#!/usr/bin/perl
use DBI;
use Net::SMTP;
use strict;
my ($first_name, $last_name, $email);
my (@row, @cc);
my $conn = DBI->connect("dbi:Pg:dbname=mattiadb");
my $query = $conn->prepare( "SELECT first_name, last_name, email" .
" FROM users" .
" ORDER BY last_name, first_name");
$query->execute();
while (@row = $query->fetchrow_array()) {
($first_name, $last_name, $email) = @row;
push(@cc, sprintf("%s <%s>", $first_name . " " . $last_name, $email));
}
$conn->disconnect();
my $smtp = Net::SMTP->new('localhost');
$smtp->mail('mattia@localhost');
$smtp->recipient(@cc, { SkipBad => 1 });
$smtp->data();
$smtp->datasend("\n");
$smtp->datasend("A simple test message\n");
$smtp->dataend();
$smtp->quit;
--- 8< --- 8< --- 8< --- 8< --- 8< ---
non c'e' un minimo di gestione degli errori ma rende l'idea.
Ah, ti servono libdbd-mysql-perl e libnet-perl.
aloha
PS: toglietemi dal Cc!!
--
mattia
:wq!
Reply to: