You are not logged in.

  • Login

1

Friday, April 16th 2010, 2:40pm

AWK: Datei auslesen, Werte in Datenbank schreiben

Hallo miteinander,

ich kämpfe gerade mit meinem ersten (AWK) Skript.
Die Idee ist folgende. Ich übergebe AWK eine Textdatei, welche im einfachsten Fall in der ersten Zeile drei Worte hat, die mit einem Leerzeichen voneineander getrennt sind z.b.:

11111 22222 33333

Awk soll diese Werte nehmen und in eine MySQL Datenbank names test, mit einer Tabelle namens tabelle mit 3 Spalten besteht. Die Namen der Spalten lauten rcet, modrcet und onfrcet

Kurzum, es funktioniert nicht. Zwischenzeitlich hat er mit einmal die Worte rcet, modrcet und onfrcet in die Tabelle geschrieben, aber eben nicht die Werte.
Irgendetwas läuft hier falsch. Nur was?

Vielleicht könnte jemand von Euch einmal das nachstehende Skript anschauen?

Grüße,
Michael

Bash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/awk -f
 
BEGIN {
        split("0", rcet)
        split("0", modrcet)
        split("0", onfrcet)
 
        frcet=0
        fmodrcet=0
        fonfrcet=0
}
 
{
  if (length($0) == 0)next
 
  if (NF != 3){
        print "Fehler Zeile: "NR
        exit
  }
 
  for(i = 0; i<=1;i++){
        rcet[i]=$1
        modrcet[i]=$2
        onfrcet[i]=$3
  }
}
END{
  for(j=1;j<=1;j++){
 
     frcet=(rcet[i])
     fmodrcet=(modrcet[i])
     fonfrcet=(onfrcet[i])
 
    printf ("insert into test.tabelle (rcet, modrcet, onfrcet) VALUES($frcet, $fmodrcet, $fonfrcet)";
 
  }
}

2

Sunday, April 18th 2010, 10:57pm

Bei printf musst du %s als Platzhalter für deine Strings benzen und als Parameter dann übergeben.
So sähe das in deinem Fall aus:

Bash

1
printf ("insert into test.tabelle (rcet, modrcet, onfrcet) VALUES(%s, %s, %s)\n", $frcet, $fmodrcet, $fonfrcet);

Social bookmarks