• Publicidad

Convertir archivo .dat a SQL

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Notapor Kiloko » 2007-08-29 18:03 @794

Gracias Explorer, pero sabes que mejor deja, planteo bien el problema por que ni yo mismo me estoy entendiendo. Deja, lo mastico y en cuanto tenga algo mejor planteado con lo que me mandaste les comento que onda... les dejo un ejemplo de la info que contiene mi .dat. Se llama 2007-8-29-17-54-0-spool.dat

Código: Seleccionar todo
1.0:POWERALERT 12=2.0:1.3.6.1.4.1.850.1=3.0:3075420=4.0:www.tripplite.com=5.0:Tripp Lite=6.0:1111 W. 35th St., Chicago IL, 60609=7.0:72=8.0:1388=9.1.2.1:1.3.6.1.2.1.1.9.1=9.1.3.1:The sysORTable capabilities are still being explored. It appears that the AGENT-CAPABILITIES macro in the MIB definitions should be used to generate these table entries. See RFC2580=9.1.4.1:1388=


Saludos
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 explorer » 2007-08-29 18:07 @797

¿Eso no es SNMP?

En CPAN hay un centenar de módulos para ese protocolo...

: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

Notapor Kiloko » 2007-08-29 18:17 @803

Efectivamente, la cosa es así, realicé un programa en Perl que lee las MIBS de un equipo y claro utiliza:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use SNMP;
use snmpUtils;
use File::Copy;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


y al final de leer las MIB las guarda en un .dat. Hasta ahí todo bien... pero necesito hacer un programa que en otra carpeta diferente que la que contiene los .dat se guarde la misma información pero ahora en sql, para que después alguien más haga un programa o lo que sea que tenga que hacer, para subir, esos .sql a la base de datos, digo no creo que sea solamente cambiarle la extensión. Lo que sea, si no que debe de tener algún formato que no conozco de un archivo .sql. Por tanto no puedo decir cómo es su estructura y he ahí donde se me complica la cosa, lo que me gustaría encontrar es algo que diga:

Aquí entra, no se, home/bin/2007-08-14-02.dat y aquí sale home/bin/sql/2007-08-14-02.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-29 18:45 @823

Lo dicho, se puede resolver todo el problema en veinte líneas.

Un fichero SQL realmente es un fichero de texto con las instrucciones SQL que el motor de la base de datos entiende. En tu caso, será un texto de la forma
Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
INSERT INTO tabla1 SET numero=1234, estado=encendido, tipo=ups, frec=1234kbz;
INSERT INTO tabla1 SET numero=1235, estado=encendido, tipo=ups2, frec=1242kbz;
INSERT INTO tabla1 SET numero=1236, estado=apagado, tipo=ups3, frec=124kbz;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y esto se hace así porque no te han encargado a ti meter los datos en la base de datos, porque entonces el programa queda un par de líneas más corto.

¡Ánimo!
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-09-04 11:31 @522

:D
ya pude hacer la incerción pero a hora me topo con el sig problema,,,
necesito leer la base de datos listo
necesito guardar lo leido en un .da listo
mover este archivo a otra carpeta,, listo
pero a hora nesecito, leer ese archivo .da con la nueva info que se va a estar extrañendo ( por medio de un cron) y determinar si es = o diferente,
Si es = de queda el archivo tal cual. si es diferente, manda una alarma, ( no sobre escribe ese archivo .da, si no que crea otro)

( algo asi como un if, que dice, ok se creo un archivo = X1 pasa 1 minuto y se vuelve a crear otro archivo = X2 y se activa el if, si x1 = X2 , " el texto interno" no hace nada puesto q es =, pasa otro minuto se crea, ( o mas bien se lee) otro archivo X3 nuevamente se activa el if, pero en esta ocación X1 es diferente de X3, si esto pasa se crea un archivo Y2 y el sistema manda una alarma, pero no se borra X1)


este es mi codigo

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#Realizamos la etapa de preparación de la sentencia
        my $sth = $dbh->prepare("SELECT idups,nombre,idsitio,ip,vendor,snmpro,modelo,estado,host,idcliente,usuario,password,fecha_add,fecha_kill,umbral_carga,trespaldo FROM ups;");
        #Realizamos la etapa de ejecución de la sentencia
                $sth->execute();
#------------------------------
#Realizamos la etapa de extracción de datos. Imprimimos dato a dato.
        while ( @tupla=$sth->fetchrow_array())
        {
                my $s = @tupla [0];
                        my $s1 =@tupla [1];
                                my $s2 =@tupla [2];
                                        my $s3 =@tupla [3];
                                                my $s4 =@tupla [4];
                                                        my $s5 =@tupla [5];
                                                                my $s6 =@tupla [6];
                #Para separar por : y guardar en una sola variable
               
                my $s7 ="$s:$s1:$s2:$s3:$s4:$s5:$s6";                  
                print "--------------\n";
                print "$s7\n";         
                open (Dat,">>$tabla.dat");
                print Dat "$s7\n$h";
                close(Dat);
#-----------------------------------------------------------------
        my $file;
                open my $file, '<', "tabla.dat" or die("No se pudo abrir archivo");
                        my $texto = do { local $/; <$file> };
                        close $file;
                        print "-------------------------------------\n";
                        print $texto;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


En la parte de leer el archivo es donde tengo problemas mas que nada para hacer las comparaciones de texto,, ( recordando que en el .dat la info se ve asi)
1:APODACA:1:172.26.2.127:Unico
2:APODACA:1:172.26.2.127:Unico
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-09-04 11:54 @537

No estaría demás que prestáramos un poco de atención al formateo del código, y a nuestra propia sintaxis española.

Para lo primero, cuestión de hacer una vista previa a enviar el mensaje (que siempre se puede volver a reeditar, más tarde). Recordar además que en Perl existe el perltidy que nos formatea el código gratuitamente.

Para lo segundo, es recomendable el uso de Firefox junto el diccionario de Español.

Finalmente, recuerdo a todos que esto es un foro, no un teléfono móvil.
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-09-04 13:15 @594

:?: :? :? :?: me quedé en las mismas...

¿Algo así como que mi código está algo revuelto? ¿o que digo demasiado sin ir al grano... :?:
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-09-04 13:19 @596

listo ya se pudo con

http://search.cpan.org/search?query=diff

Con esto comparo el texto.
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-09-04 13:35 @608

No, lo que quiero decir es que tu mensaje debería parecerse a esto:

:D

Ya pude hacer la inserción pero ahora me topo con el siguiente problema...

Necesito leer la base de datos: listo
Necesito guardar lo leído en un .dat: listo
Mover este archivo a otra carpeta: listo

Pero ahora necesito leer ese archivo .dat con la nueva información que se va a estar extrayendo (por medio de un cron) y determinar si es igual o diferente.

Si es igual, se queda el archivo tal cual.

Si es diferente, manda una alarma (no sobreescribe ese archivo .dat, si no que crea otro). Algo así como un if que crea un archivo llamado 'X1'. Pasa un minuto y se vuelve a crear otro archivo 'X2' y se activa el if: si X1 = X2 no hace nada puesto que son iguales. Pasa otro minuto, se crea, (o más bien se lee) otro archivo X3 nuevamente, se activa el if, pero en esta ocasión X1 es diferente de X3. Si esto pasa se crea un archivo Y2 y el sistema manda una alarma, pero no se borra X1).

Este es mi código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
# Realizamos la etapa de preparación de la sentencia
my $sth = $dbh->prepare("SELECT idups,nombre,idsitio,ip,vendor,snmpro,modelo,estado,host,idcliente,usuario,password,fecha_add,fecha_kill,umbral_carga,trespaldo FROM ups;");

# Realizamos la etapa de ejecución de la sentencia
$sth->execute();

#------------------------------
# Realizamos la etapa de extracción de datos. Imprimimos dato a dato.
while ( @tupla=$sth->fetchrow_array()) {
    my $s = @tupla [0];
    my $s1 =@tupla [1];
    my $s2 =@tupla [2];
    my $s3 =@tupla [3];
    my $s4 =@tupla [4];
    my $s5 =@tupla [5];
    my $s6 =@tupla [6];

    # Para separar por : y guardar en una sola variable
    my $s7 ="$s:$s1:$s2:$s3:$s4:$s5:$s6";                      
    print "--------------\n";
    print "$s7\n";             

    open (Dat,">>$tabla.dat");
    print Dat "$s7\n$h";
    close(Dat);

    #-----------------------------------------------------------------
    my $file;
    open my $file, '<', "tabla.dat" or die("No se pudo abrir archivo");
    my $texto = do { local $/; <$file> };
    close $file;

    print "-------------------------------------\n";
    print $texto;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


En la parte de leer el archivo es donde tengo problemas más que nada para hacer las comparaciones de texto... (recordando que en el .dat la información se ve así):
Código: Seleccionar todo
1:APODACA:1:172.26.2.127:Unico
2:APODACA:1:172.26.2.127:Unico
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 explorer » 2007-09-04 13:40 @611

Aunque habría algunas cosas que comentar en el código, como errores fatales de escritura (aunque funciona), si sólo te interesa saber si ha habido cambios entre ficheros, sin importar su contenido, valdría con comparar su tamaño (-s) y su fecha de modificación (-M), con lo que ni siquiera tendrías que leerlos.
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 Bases de datos

¿Quién está conectado?

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

cron