• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

awk und MySQL ??

Hallo ich habe folgendes Problem:

Ich möchte ein Abfrageergebnis aus einem awk script in MySQL schreiben mit meinem BASH Script ist das kein Problem ab er mit dem awk bekomme ich immer eine Fehlermeldung.

[BASH-SCRIPT]

Code:
a=Tux
b=Dosenkohl

echo "insert into tabel (NAME, NACHNAME) values ('$a', '$b') | mysql -u user --password="Password" -D Datenbank

Unter awk gib es eine Datei welche die name beinhaltet.

Code:
awk '$1==Tux {print $1, $2};print {"insert into table (NAME, VORNAME) values ("$1","$2")} /pfad/zur/Datei' | mysql -u user -password="password" -D Datenbank


Leider klappt das mit dem awk-script nicht, ich denke das dies an den "" bei den Variabeln liegt habe aber schon fast alles varianten porbiert! Danke für eure Hilfe.
 
Ich versteh das awk-Script nicht ... :?

Versuch mal:
Code:
$ cat test/1.txt
Tux Dosenkohl
Vorname Name
Hallo Test
Code:
awk '{ print NR, "Schreibe "$0" in Datenbank"; system("mysql -h localhost -u user --password=Password -D Datenbank -e \"INSRT INTO table (NAME, VORNAME) VALUES ("$1","$2")\"");}' < test/1.txt


PS: Ungetestett, was den DB-Teill betrifft :wink:
 
Hey leider bekomme ich jetzt diese meldung

linux:/scripte # awk '{print $1 $2 ;system("mysql -h localhost -u root --password=hugo -D online -e \"INSERT INTO user (Name, Vorname) Values ("$1", "$2")\"");}' namen.txt
TorbenBlankertz
ERROR 1054 (42S22) at line 1: Unknown column 'Torben' in 'field list'
NorbertPaulus
ERROR 1054 (42S22) at line 1: Unknown column 'Norbert' in 'field list'

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' )' at line 1
 
Ja, das hab ich mir schon fast gedacht ... :x

MySQL will seine Werte in Hochkommata
Code:
... VALUES ('Wert1','Wert2') ...
aber:
man bash
A single quote may not occur between single quotes, even when preceded by a backslash.
... steht im Gegensatz zur awk-Syntax
Code:
awk ... '{ ... }'

Also musst du das ganze in einem kleinen Script lösen ...
... in etwa so:
Code:
#!/bin/sh
LIST="/pfad/zur/datei.txt";
IFS="

";
for i in `cat $LIST`;
 do
  v=`echo $i | awk -F" " '{print $1}'`;n=`echo $i | awk -F" " '{print $2}'`;
  mysql -h localhost -u user --password=passwd -D online -e "insert into user (vorname,name) values ('$v','$n');";
done;
Code:
$ cat datei.txt
Tux Dosenkohl
Vorname Name
Hallo Test
 
Oben