The UNIX and Linux Forums  

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Overdracht gegevens van een bestand naar een andere inquisitive101 UNIX voor Dummies Questions & Answers 1 01-05-2009 03:42
FTP - Gegevens Overdracht beperkingen. systeem-admin AIX 2 12-20-2006 03:11
Data Transfer's in IPC Mechanismen? boris35 UNIX voor Dummies Questions & Answers 2 05-26-2005 01:12 PM
gegevens corruptie met ftp overdracht malcom UNIX for Advanced & Expert Gebruikers 12 08-04-2003 08:38
Hoeveel data overdracht op 100 volledige 98_1LE UNIX voor Dummies Questions & Answers 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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 01-05-2009
inquisitive101 inquisitive101 is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2009
Posts: 5
Overdracht gegevens van een bestand naar een andere

Hoi,
Ik ben relatief nieuw voor shell scripting, Ive gewerkt aan een aantal fundamentele scripts en meest gebruikte van de Unix-commando's in de meest eenvoudige situaties. Maar ik ben nu geconfronteerd met een taak die lijkt te zijn dan mij.

Ik heb een bestand met een aantal gegevens in de vorm van rijen en kolommen:

123 4536 abcd4 677 bbb ggg nnn 32425
343 5656 abcd6 566 eee fff ooo 56454
343 5645 abcd7 556 ddd lll jjj 43536 ....
.
.
.
en zo verder

Ik heb een shell-script om deze gegevens te halen en stak het in een insert commando die ligt in een andere tekst invoegen file.The commando zou zijn in de vorm insert into table_xyz waarden ($ a, '$ b', '$ c', enz. ) waar de variabelen zou worden de waarden van de bovengenoemde gegevens bestand. de output van het script moet zo veel invoegen uitspraken als er lijnen in de gegevens file.As in,
insert into table_xyz waarden (123, 4536, 'abcd4', 677, 'BBB', 'ggg', 'nnn', 32425)
insert into table_xyz waarden (343, 5656, 'abcd6', 566, 'eee', 'fff', 'ooo' 56454) etc

Een soort van script voor het opslaan van de gegevens in een array of iets en iterate erdoor? Alle hulp, zou advies worden zeer gewaardeerd ...

Thanx op voorhand
  #2 (permalink)  
Old 01-05-2009
summer_cherry summer_cherry is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: Jun 2007
Locatie: Beijing China
Berichten: 1.097
hi hieronder perl script kan u helpen een aantal
Weet u niet zeker of uw kolom wordt in vaste lengte, zo ja, kunt verwijderen die trim (en), en het aantal <geven aan de lengte van uw waarde, dus zorg ervoor dat de langste <voor elk van hen afhankelijk te gebruiken op uw langste kolomwaarde .



Code:
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 online now Forum Staff  
Moderator
  
 

Join Date: december 2008
Locatie: op.
Berichten: 1.958
Dit Perl script kan je helpen. Het duurt 2 argumenten:
  1. Seperator gebruikt (in uw voorbeeld '')
  2. Tabel voor het invoegen (in uw voorbeeld 'table_xyz')
De gegevens zelf worden gelezen van de standaard invoer, zijn de INSERT verklaringen af te drukken standaard uit.

Code:
#!/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";
}

Uw voorbeeld zou geven
Code:
$ 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
Geregistreerde gebruiker
  
 

Join Date: Sep 2008
Posts: 205
Of zoals shell script:


Code:
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
Geregistreerde gebruiker
  
 

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

zal proberen 'em out ... tenminste ik weet nu in welke richting ik moet verhuizen
  #6 (permalink)  
Old 01-07-2009
inquisitive101 inquisitive101 is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2009
Posts: 5
Ok nu hoe zit het als ik een nieuw scenario waar mijn. Csv-bestand ziet er als volgt uit:

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


Mijn output moet b 3 insert query's, zijn dat alleen iets anders. dwz

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

het probleem is de manier waarop de 2e en 4e velden in de query moeten b afgedrukt. terwijl de 2e veld moet b 3 keer herhaald (zoals in elke regel lezen van de gegevens-bestand), de 4e veld stappen tot en met 3 en gaat terug na elke 3e regel van het bestand ...

suggesties ...? behoefte aan een shell-script ...

Ik probeerde het bewerken van shell-script gegeven door Christoph, maar de productie is zodanig dat de dezelfde 3 zoekopdrachten worden herhaald zo vaak als er lijnen in mijn bestand voordat u op ...
Closed Thread

Bladwijzers

Labels
awk, awk trim, trim, trim awk

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 04:56.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0