Mar May 13, 2008 9:24 am
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
| insertar ; |
|
|
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.
| SQL: | 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 |
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 |
|
|
|

Mar May 13, 2008 9:32 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
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
| Perl: | open FICHERO, "<fichero.sql";
open FICHER2, ">ficher2.sql";
while (<FICHERO>) {
chomp;
print FICHER2 "$_;\n";
}
close FICHER2;
close FICHERO; |
También se puede hacer de forma directa en la línea de comandos:
| bash: | perl -p -i -e 's/$/;/' fichero.sql |
|
|

Mar May 13, 2008 9:44 am
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
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: |
-200805131
-200805132
-200805133 |
¿Cómo hago esto? Porque en terminal sería con * pero en Perl, ¿cuál sería este símbolo?  |
|


Mar May 13, 2008 11:07 am
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
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
| Perl: | foreach my $fichero ( <200805*.sql> ) {
# ...
} |
| Perl: | #!/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 );
} |
Gracias  |
|
Powered by phpBB © 2001, 2005 phpBB Group
|