• Publicidad

Contactar base de datos sybase

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Notapor Kiloko » 2007-08-28 09:59 @457

Muy cierto. Me voy a ver muy usuario pero creo que sería bueno separar y explicar esas dos partes. Bueno, espero que nadie más cometa ese error. En cuanto a mi programa el problema está aquí.

Código: Seleccionar todo
install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.5/sun4-solaris /usr/local/lib/perl5/5.8.5 /usr/local/lib/perl5/site_perl/5.8.5/sun4-solaris /usr/local/lib/perl5/site_perl/5.8.5 /usr/local/lib/perl5/site_perl .) at (eval 1) line 3.
Perhaps the DBD::mysql perl module hasn't been fully installed,
or perhaps the capitalisation of 'mysql' isn't right.
Available drivers: DBM, ExampleP, File, Oracle, Proxy, Sponge.
 at ConectarDB.pm line 16


No puedo actualizar los módulos; voy a intentar con un programa ya residente que se contacta a la BD... En cuanto tenga una respuesta satisfactoria la subo al foro...
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Publicidad

Notapor Kiloko » 2007-08-28 12:14 @551

Ok ya puedo contactarme con la base de datos.. así.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
package ConectarDB;
use strict;
use DBI;
#------------------------------
my $db_user = "XXX";
my $db_pass = "Uno por_hay";
my $host_name = "localhost";
my $db_name = "dnet";
#------------------------------
my $q_string = "DBI:Oracle:host=$host_name;database=$db_name";
sub connect
{
return (DBI->connect ($q_string, $db_user, $db_pass,
{PrintError => 0, RaiseError => 1}));
}
1;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


A hora bien necesito hacer un query, y pasarlo a un archivo TXT..
Lo que no comprendo bien es cómo se logra la lectura de estas tablas. En el tutorial se pone el siguiente ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
1: my($dbh,$sth);
2: $dbh = ConectarDB->connect();
3: $sth = $dbh->prepare('SELECT fecha FROM table WHERE nombre = ? AND apellido = ?') or die("Couldn't prepare statement: " . $dbh->errstr);
4: $sth->execute("Uriel","Lizama") or die("Couldn't execute statement: " . $sth->errstr);
5: my $fecha = $sth->fetchrow_array();
6: $sth->finish;
7: $dbh->disconnect;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero no entiendo bien esto. ¿Cuál es la estructura?

¿Se supone que la línea 3 prepara la lectura de las tablas donde se encuentra la palabra nombre y apellido?
¿Y si es así busca Uriel y lizama?

No entiendo esto, ¿cómo podría yo sacar toda la info?

Por cierto si ejecuto este programa resulta el siguiente error:
Código: Seleccionar todo
Can't connect to data source dbi:Oraclednet, no database driver specified and DBI_DSN env var not set at ConectarDB.pm line 16
Última edición por Kiloko el 2008-10-22 14:16 @636, editado 1 vez en total
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-08-28 13:01 @584

Me temo que necesitas un cursillo rápido de SQL...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Kiloko » 2007-08-28 13:03 @586

Ok para el query estoy intentando este código

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#............................................................................
# Programa Ejemplo:
#............................................................................
#!/usr/bin/perl -w
#------------------------------
use strict;
use DBI;
#------------------------------
my $db_user = "XXX";
my $db_pass = "Uno_por_hay";
my $host_name = "localhost";
my $db_name = "dnet";
#------------------------------
my $q_string = "DBI:Oracle:host=$host_name;database=$db_name";
my $ORL = (DBI->connect ($q_string, $db_user, $db_pass,{PrintError => 0, RaiseError => 1}));

my $query = $ORL->prepare('select campo from tabla');
$query->execute();
while (my @datos = $query->fetchrow())
{
print @datos;
};
$query->finish;
$ORL->disconnect;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero me manda el siguiente error.

Código: Seleccionar todo
DBI connect('host=localhost;database=dnet','load',...) failed: Can't connect using this syntax without specifying a HOST and a SID at 1.pl line 15


Creo yo no estoy entendiendo bien el concepto de query y como se aplica... ¿alguien que me pueda explicar o recomendar un artículo?
Última edición por Kiloko el 2008-10-22 14:17 @637, editado 1 vez en total
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor Kiloko » 2007-08-28 13:13 @592

Me temo que asi, es.... una repasada a SQL.... :D
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-08-28 13:16 @594

En ninguna parte del manual de DBD::Oracle he visto lo del 'database='. Sólo he visto lo que te dice el error: el 'sid='. Eso es lo que te falta.

Y la línea '#!...' debe ser la primera, no la cuarta.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Kiloko » 2007-08-28 15:52 @703

OK ¿y que es el sid?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use DBI;

$dbh = DBI->connect("dbi:Oracle:$dbname", $user, $passwd);

$dbh = DBI->connect("dbi:Oracle:host=$host;sid=$sid", $user, $passwd);

# See the DBI module documentation for full details

# for some advanced uses you may need Oracle type values:
use DBD::Oracle qw(:ora_types);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor Kiloko » 2007-08-28 16:26 @726

Mas fácil, ya sé cómo hacerle...

(Digamos que se soluciona el problema...) y listo, ya jala y hace lo que tiene que hacer.

Nada más dame tu opinión: ¿tu dónde pondrías el programa ya terminado?
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor Kiloko » 2007-08-28 16:42 @737

No no no, que choro, mira así debe de quedar para contactar y sacar la info... nada que ver... en fin para referencia de los perleros... Saludos.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/local/bin/perl

use DBI;
use lib "/export/home/arlogs/lib";
use snmpUtils ;
my $fecha =  $ARGV[0];
my @ListaLsw ;
my @ListaInterfases ;
my @ListaInterfacesSNMP ;
my ($LanSw, $IP, $Comunidad, $Idsitio, $Idcliente) ;
my $sql_lsw;
my $sql_interfaces ;
my $debug = 1 ;
my $fsalida = "lista_actualizar.sql" ;
my $fsalidadat = "";
my $flsw = "$ENV{HOME}/lanswitches/config/lista_lsw.tmp";
my $ffw = "$ENV{HOME}/perfw/config/lista_fw.tmp";
$sql_lsw = "SELECT idfirewall,ip,comunidad_snmp,nombre,posicion,idsitio,idcliente from firewalls where estado=1 and tipo=2";
@ListaLsw = saca_lista($sql_lsw);
open (LSWFILE, ">$flsw") ;
foreach (@ListaLsw) {
print LSWFILE "$_\n" ;
}
close (LSWFILE) ;
$sql_lsfw = " SELECT IP, IDFIREWALL, HOST , TIPO from firewalls where tipo = 0 and ESTADO=1 " ;
@ListaFw = saca_lista($sql_lsfw) ;
open (FWFILE, ">$ffw");
foreach (@ListaFw) {
print FWFILE "$_\n" ;
}
close(FWFILE) ;

################ SubRutinas ########

sub saca_lista () {

        my $selectLista = $_[0];
        my $user=$ENV{"???????????'"};
        my $password=$ENV{"??????????????'"};
        my $instancia=$ENV{"?????????????????"};
        my @lista, @salida;
        undef @salida ;
        $dbh=DBI->connect
        ("DBI:Oracle:" , "$user\@$instancia", "$password");
        $sth=$dbh->prepare("$selectLista");
        $sth->execute();
         while(@lista=$sth->fetchrow_array)
         {
         $renglon ="";
         for ($i=0; $i<@lista; $i++) {
         if ($i == 0 ) { $renglon = $lista[$i] ;}
          else { $renglon = $renglon . "=" .  $lista[$i]; }
          }
          push(@salida,$renglon);
          }
         close $fh ;
   return (@salida);
}
$sth->finish();
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Heee. Ya casi llego al post número 100... :) espero ganarme mi playera, o mi tacita conmemorativa, jajajajaja. Un saludo.
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-08-28 19:39 @860

Kiloko escribiste:OK ¿y que es el sid?
Ni idea. Pero para eso está nuestro amigo Google. Entro en google.com, pongo las palabras Oracle y sid, y en el primer resultado me dice lo que es: el nombre de la base de datos que por defecto el motor de Oracle servirá.

Fácil, ¿no? :D
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 34 invitados