AWK: Datei auslesen, Werte in Datenbank schreiben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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

    Quellcode

    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. }
    Alles anzeigen
  • 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:

    Quellcode

    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.