• Publicidad

insertar ;

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

insertar ;

Notapor Kiloko » 2008-05-13 10:24 @475

Tengo un problema muy básico y se que la solución es casi para dar risa tengo un archivo con la siguiente información.

Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
INSERT INTO ACTIVO_PLV (fecha, idcid, idplv, disponibilidad, latencia, perdida_paq, jitter_avg, disponibilidad_remoto, throughput, clase) VALUES(to_date('20080512000900','YYYYMMDDHH24MISS'),142113,1585,1,50.8,0,5.75,1,0,1)
INSERT INTO ACTIVO_PLV (fecha, idcid, idplv, disponibilidad, latencia, perdida_paq, jitter_avg, disponibilidad_remoto, throughput, clase) VALUES(to_date('20080512000900','YYYYMMDDHH24MISS'),142113,1586,1,34.2142857142857,30,8.6,1,0,2
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Lo que necesito es, poner ';' al final de cada sentencia. Como podrán ver es para insertar en la base de datos.
¿Me podrían echar la mano?
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 » 2008-05-13 10:32 @480

Si cada sentencia está en una línea distinta, te vale con hacer un bucle por todas las líneas de ese fichero, y poner un ';' al final.

Algo como
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open FICHERO, "<fichero.sql";
open FICHER2, ">ficher2.sql";
while (<FICHERO>) {
    chomp;
    print FICHER2 "$_;\n";
}
close FICHER2;
close FICHERO;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


También se puede hacer de forma directa en la línea de comandos:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -p -i -e 's/$/;/' fichero.sql
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Kiloko » 2008-05-13 10:44 @489

Excelente. Sí, me había tocado ver que también lo hacían desde terminal, pero aquí el problema es que son como 300 archivos, mi idea es hacer un cat, de todos, juntarlos en uno solo y después correr la aplicación en Perl.

Por cierto para lo que te comento en Perl si yo quiero tomar un valor como la fecha 20080513 pero también quiero que tome los demás archivos que tengan X terminación.
Ejemplo
Código: Seleccionar todo
-200805131
-200805132
-200805133

¿Cómo hago esto? Porque en terminal sería con * pero en Perl, ¿cuál sería este símbolo? :?:
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 » 2008-05-13 11:24 @517

Para juntar todos los ficheros en uno solo, puedes usar el comando cat:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
cat *.sql > uno_solo.sql
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Y para lo del comodín, sirve el mismo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach my $fichero ( <200805*.sql> ) {
    # ...
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Kiloko » 2008-05-13 12:07 @546

Ok. Este sería mi programa ya funcionando. Por el momento opté por hacer el cat, en un *.sh, el cual me genera un sql.sql.

Aún no comprendo bien la opción de
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach my $fichero ( <200805*.sql> ) {
    # ...
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use POSIX;
#**************************************************
my $AYER = strftime("%Y%m%d", localtime(time - 86400));
#**************************************************
print "$AYER";

open FICHERO, "<sql.sql";
open FICHER2, ">$AYER.sql";
while (<FICHERO>) {
    chomp;
    print FICHER2 "$_;\n";
}
close FICHER2;
close FICHERO;

{
 open (Data, ">>$AYER.sql");
      print Data "commit;\n";
      print Data "exit\n";
      close (Data);
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Gracias :)
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


Volver a Básico

¿Quién está conectado?

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

cron