The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Transferir dados de um arquivo para outro inquisitive101 UNIX para Dummies Perguntas & Respostas 1 01-05-2009 03:42
FTP - Transferência de dados Limitações. sistema-admin AIX 2 12-20-2006 03:11
Transferência de dados em programas IPC Mecanismos? boris35 UNIX para Dummies Perguntas & Respostas 2 05-26-2005 01:12
corrupção de dados com ftp transferência malcom UNIX & avançada para usuários experientes 12 08-04-2003 08:38
Quanto é que irá transferir dados a 100 completa 98_1LE UNIX para Dummies Perguntas & Respostas 3 10-05-2001 10:48

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 01-05-2009
inquisitive101 inquisitive101 is offline
Usuário
  
 

Join Date: Jan 2009
Posts: 5
Transferir dados de um arquivo para outro

Oi,
Eu sou relativamente novo para shell scripts, Ive trabalhou em alguns scripts básicos e utilizada a maioria dos comandos unix no mais simples de situações. Mas estou agora confrontados com uma tarefa que parece estar para além do eu.

Eu tenho um arquivo com alguns dados na forma de linhas e colunas:

123 4536 abcd4 677 bbb GGG nnn 32425
343 5656 abcd6 566 eee ooo fff 56454
343 5645 abcd7 556 ddd lll jjj 43.536 ....
.
.
.
e assim por diante

Preciso de um shell script para pegar esses dados e colocá-la em inserir um comando que está no outro texto file.The inserir comando ficaria sob a forma inserir no table_xyz valores ($ a, '$ b', '$ c', etc ), onde as variáveis seriam os valores acima mencionados a partir do arquivo de dados. a saída do script deve ser inserida como muitas declarações como existem linhas de dados em file.As,
insert into table_xyz valores (123, 4536, «abcd4 ', 677,' BBB ',' GGG ',' nnn ', 32425)
insert into table_xyz valores (343, 5656, «abcd6 ', 566,' eee ',' fff ',' ooo '56454), etc

Algum tipo de script para armazenar os dados em um array ou algo parecido e iterar através dela? Qualquer ajuda, aconselhamento seria muito apreciada ...

Thanx in advance
  #2 (permalink)  
Old 01-05-2009
summer_cherry summer_cherry is offline Forum Advisor  
Usuário
  
 

Join Date: Jun 2007
Localização: Beijing China
Mensagens: 1.088
oi abaixo perl script pode ajudá-lo a algum
Não tenho certeza se a sua coluna é fixada em comprimento, se sim, pode remover os remates (e), eo número de <indicar a duração do seu valor, por isso certifique-se de utilizar o maior <para todos eles, dependendo do seu maior valor da coluna .


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 (permalink)  
Old 01-05-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderador
  
 

Join Data: dezembro 2008
Localização:. Em
Posts: 1.877
Este Perl script pode te ajudar. Demora 2 argumentos:
  1. SEPERATOR utilizado (no seu exemplo, '')
  2. Quadro de inserção (no seu exemplo "table_xyz ')
Os dados em si são lidos a partir de padrão de entrada, as declarações INSERT são impressas com a norma fora.
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";
}
Seu exemplo daria
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 (permalink)  
Old 01-05-2009
Christoph Spohr Christoph Spohr is offline
Usuário
  
 

Join Date: Sep 2008
Lugares: 205
Ou como simples shell script:

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
HTH Chris
  #5 (permalink)  
Old 01-05-2009
inquisitive101 inquisitive101 is offline
Usuário
  
 

Join Date: Jan 2009
Posts: 5
Thanx guys .....

vai tentar-los ... pelo menos agora eu sei em que sentido eu preciso para mover
  #6 (permalink)  
Old 01-07-2009
inquisitive101 inquisitive101 is offline
Usuário
  
 

Join Date: Jan 2009
Posts: 5
Ok agora que tal se eu tiver um novo cenário onde o meu arquivo. Csv parecido com isto:

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


A minha saída deve b 3 inserir consultas, que são apenas ligeiramente diferentes. ou seja:

insert into table_xyz valores (123, $ um, 'abcd4', 601, $ b, c $, $ d, 32425)
insert into table_xyz valores (124, $ um, 'abcd4', 602, $ b, c $, $ d, 32425)
insert into table_xyz valores (125, $ um, 'abcd4', 603, $ b, c $, $ d, 32425)
insert into table_xyz valores (126, $ e, 'abcd4', 601, $ b, c $, $ d, 32425)
insert into table_xyz valores (127, $ e, 'abcd4', 602, $ b, c $, $ d, 32425)
insert into table_xyz valores (128, $ e, 'abcd4', 603, $ b, c $, $ d, 32425)

o problema é o modo como o 2 º e 4. domínios na consulta deverá b impressa. enquanto o 2 º campo deve b repetido 3 vezes (como em ler cada linha do arquivo de dados), o campo 4. incrementos remonta a 3 e depois de cada linha do arquivo 3. ...

quaisquer sugestões ...? precisam de um shell script ...

Eu tentei modificar script dado por Christoph, mas o resultado é tal que os mesmos 3 consultas são repetidas tantas vezes quantas linhas no meu arquivo de dados antes de passar ...
Closed Thread

Marcadores

Tags
awk, awk caimento, caimento, caimento awk

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 01:21.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0