The UNIX and Linux Forums  

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
Transferir datos de un archivo a otro inquisitive101 UNIX for Dummies Preguntas y Respuestas 1 01-05-2009 03:42 AM
FTP - Transferencia de datos de limitaciones. el sistema de administración AIX 2 12-20-2006 03:11 AM
Transferencia de datos de programas en los mecanismos IPC? boris35 UNIX for Dummies Preguntas y Respuestas 2 05-26-2005 01:12 PM
la corrupción de los datos con la transferencia del ftp malcom UNIX para usuarios avanzados y expertos 12 08-04-2003 08:38 AM
¿Cuántos datos se completa la transferencia de 100 98_1LE UNIX for Dummies Preguntas y Respuestas 3 10-05-2001 10:48 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 01-05-2009
inquisitive101 inquisitive101 is offline
Usuario Registrado
  
 

Fecha: enero 2009
Puestos: 5
Transferir datos de un archivo a otro

Hola,
Soy relativamente nuevo en scripts de shell, he trabajado en unas pocas secuencias de comandos y utiliza la mayoría de los comandos unix en el más simple de las situaciones. Pero ahora estoy frente a una tarea que parece estar más allá de mí.

Tengo un archivo con algunos datos en forma de filas y columnas:

123 4536 abcd4 677 bbb ggg nnn 32425
343 5656 abcd6 566 fff eee ooo 56454
343 5645 abcd7 556 jjj lll ddd 43536 ....
.
.
.
y así sucesivamente

Necesito un script de shell para recoger esta información y ponerla en insertar un comando que se encuentra en otro texto file.The comando sería insertar en el formulario inserto en table_xyz valores ($ a, $ b ',' $ c ', etc ), donde las variables serían los valores de los mencionados datos de archivo. la salida de la secuencia de comandos debe insertar el mayor número de declaraciones, ya que hay líneas en los datos en file.As,
insertar en table_xyz valores (123, 4536, 'abcd4', 677, 'bbb', 'ggg', 'nnn', 32425)
insertar en table_xyz valores (343, 5656, 'abcd6', 566, 'eee', 'fff', 'ooo' 56454), etc

Algún tipo de script para almacenar los datos en una serie o algo y iterar a través de él? Cualquier ayuda, consejo serán bienvenidos ...

Gracias de antemano
  #2 (Enlace permanente)  
Old 01-05-2009
summer_cherry summer_cherry is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: junio 2007
Ubicación: Beijing China
Mensajes: 1.092
hola a continuación perl script le puede ayudar a algunos
No está seguro si está en su columna de longitud fija, en caso afirmativo, ¿puede eliminar esos trim (y), y el número de <indicar la duración de su valor, así que asegúrese de usar la más larga <para todos ellos en función de su valor más largo de la columna .



Código:
format TOP=
insert into table_xyz values(@<<<<<,@<<<<<,trim('@<<<<<<'),@<<<<<,trim('@<<<<<'),trim('@<<<<<'),trim('@<<<<<<'),@<<<<<<);
$a $b $c $d $e $f $g $h
.
$~=TOP;
open FH,"<a.txt";
while(<FH>){
	($a, $b, $c, $d, $e, $f, $g, $h)=split(" ",$_);
	write;
}
close FH;

  #3 (Enlace permanente)  
Old 01-05-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderador
  
 

Fecha: diciembre 2008
Ubicación:. En
Puestos: 1.950
Esto Perl script puede ayudarle. Se tarda 2 argumentos:
  1. Separador utilizado (en su ejemplo "")
  2. Cuadro para la inserción (en su ejemplo "table_xyz»)
Los propios datos se leen de la entrada estándar, el INSERT se imprime a la norma a cabo.

Código:
#!/usr/bin/perl -W

use strict;
use warnings;

my $sep   = $ARGV[0];
my $table = $ARGV[1];
while ( my $line = <STDIN> ) {
    print "INSERT INTO $table VALUES(";
    my @line = split /$sep/, $line;
    for ( my $i = 0 ; $i < $#line ; $i++ ) {
        $_ = $line[$i];
        if (/\D/) {
            print '"', $_, '"';
        }
        else {
            print $_;
        }
        print ',' if $i < $#line - 1;
    }
    print ");\n";
}

Su ejemplo podría dar
Código:
$ perl csv2sql.pl ' ' table_xyz < example.txt
INSERT INTO table_xyz VALUES(123,4536,"abcd4",677,"bbb","ggg","nnn");
INSERT INTO table_xyz VALUES(343,5656,"abcd6",566,"eee","fff","ooo");
INSERT INTO table_xyz VALUES(343,5645,"abcd7",556,"ddd","lll","jjj");
$

  #4 (Enlace permanente)  
Old 01-05-2009
Christoph Spohr Christoph Spohr is offline
Usuario Registrado
  
 

Fecha: Sep 2008
Puestos: 205
O como script de shell sencillo:


Código:
while read a b c d e f g h 
do 
    echo "insert into table_xyz values($a, $b, '${c}', $d, '${e}', '${f}', '${g}', $h)"
done < datafile

Chris HTH
  #5 (Enlace permanente)  
Old 01-05-2009
inquisitive101 inquisitive101 is offline
Usuario Registrado
  
 

Fecha: enero 2009
Puestos: 5
Gracias chicos .....

intentará 'em a cabo por lo menos ... ahora sé en qué dirección debo pasar
  #6 (Enlace permanente)  
Old 01-07-2009
inquisitive101 inquisitive101 is offline
Usuario Registrado
  
 

Fecha: enero 2009
Puestos: 5
Bueno ¿qué tal si ahora tengo un nuevo escenario donde mi. Csv tiene este aspecto:

a, b, c, d
a, b, c, d
a, b, c, d
e, b, c, d
e, b, c, d
e, b, c, d


Mi salida debe insertar b 3 preguntas, que sólo son ligeramente diferentes. es decir:

insertar en table_xyz valores (123, $ a, 'abcd4', 601, $ b, $ c, $ d, 32425)
insertar en table_xyz valores (124, $ a, 'abcd4', 602, $ b, $ c, $ d, 32425)
insertar en table_xyz valores (125, $ a, 'abcd4', 603, $ b, $ c, $ d, 32425)
insertar en table_xyz valores (126, $ e, 'abcd4', 601, $ b, $ c, $ d, 32425)
insertar en table_xyz valores (127, $ e, 'abcd4', 602, $ b, $ c, $ d, 32425)
insertar en table_xyz valores (128, $ e, 'abcd4', 603, $ b, $ c, $ d, 32425)

el problema es la forma en la 2 ª y 4 campos de la consulta debería ser impreso. mientras que el 2 de campo debería ser repetido 3 veces (como en leer cada línea del archivo de datos), el 4 de incrementos a 3 sobre el terreno y vuelve después de cada 3 ª línea del archivo ...

alguna sugerencia ...? necesita un script de shell ...

He intentado modificar script de shell dado por Christoph pero la salida es tal que el mismo 3 preguntas se repiten tantas veces como sea hay líneas en mi archivo de datos antes de pasar ...
Closed Thread

Marcadores

Etiquetas
awk, awk trim, trim, recortar awk

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 11:22 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0