AWK: Datei auslesen, Werte in Datenbank schreiben

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • 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

    Source Code

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

    Source Code

    1. printf ("insert into test.tabelle (rcet, modrcet, onfrcet) VALUES(%s, %s, %s)\n", $frcet, $fmodrcet, $fonfrcet);
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.