PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql per shellscript



WYSIIB
12.06.03, 17:53
also... ich hab ein problem mit einem shellscript das ich versuche zu schreiben.

das script soll 2 parameter übergeben bekommen. die eine gibt die spalte an (where $ersterparameter) und der 2. gibt einen wert an der dann zu dieser spalte hinzuaddiert werden soll.

mein problem ist nur das ich das mysql kommando innerhalb dieses shellscriptes nicht hinbekomme.

parameterübergabe etc hab ich schon geschafft dank hilfe :)


kann mir jemand helfen wie so ein mysql befehl aussehen soll/muss?

Kip
12.06.03, 18:16
wie wäre es wenn du schonmal postest was du bisher hast und uns dann noch genau sagst was dein mysql befehl machen soll ... ?! :)

wenn wir nicht wissen was du willst können wir dir auch nicht helfen :D

WYSIIB
12.06.03, 18:21
ohje ich dachte das wäre verständlich.... aber wenn ich rede :ugly:


also:

übergeben wird als erstes eine name dann eine zahl

#
#/bin/bash
#
# mysql -u root - p pass -d datenbank -e

und da muss dann der befehl hin. die beiden parameter kann ich ja einfach per $1 und $2 ansprechen.

mir schwebt sowas vor wie:

-e UPDATE tabelle SET wert = wert + $1 WHERE $2

nur irgendwie stimmt da die syntax noch nicht so richtig

Kip
12.06.03, 18:38
Original geschrieben von WYSIIB
-e UPDATE tabelle SET wert = wert + $1 WHERE $2


versuchs mal mit:



UPDATE tabelle SET wert = 'wert + $1' WHERE foo = '$2'


wobei du foo noch durch einen dbspalte ersetzen solltest nach der du abfragen willst :ugly:

Bauchi
12.06.03, 18:46
preisfrage: werden variablen ausgewertet die innerhalb von single quotes stehen ???
antwort: nein ;)

und nachdem du deine frage ohne where bedingung formuliert hast, müsste eigentlich das statement hier das richtige sein:

UPDATE tabelle SET $1 = $1 + $2 ;

Kip
12.06.03, 18:59
Original geschrieben von Bauchi
UPDATE tabelle SET $1 = $1 + $2 ;

Preisfrage: Macht dieses MySQL Statement noch das was WYSIIB wollte: Wenn ichs richtig verstanden habe nicht. Wenn die bash keine SingleQuotes mag dann lass sie halt weg, tut mir leid das ich nicht jeden Tag in der bash rumscripte ...

WYSIIB
12.06.03, 21:01
ne das addiert die beiden variablen.....

aber mir gehts ja darum das die eine die bedingung ist.....

ich probiers jetzt mal mit der variante ohne '

WYSIIB
12.06.03, 21:07
ich glaub der syntax des gesammten mysql befehls stimmt nicht....

bekomme beim starten des scripts die mysql help angezeigt.....


vermute irgendwas ab dem "mysql -u......" stimmt nicht....

Jasper
13.06.03, 08:29
Original geschrieben von WYSIIB

vermute irgendwas ab dem "mysql -u......" stimmt nicht....

das ist eigentlich nicht schwer:

#!/bin/sh
mysql -uuser -ppasswort -Ddatenbank -e "update tabelle set wert = wert + "$1" where foo = '"$2"'"

sieh dir genau an, wo singlequotes und doublequotes stehen.

-j

WYSIIB
13.06.03, 14:16
Original geschrieben von Jasper

-uuser -ppasswort -Ddatenbank


-uuser wirklich alles so zusammen geschrieben? parameter und wert?

Jasper
13.06.03, 15:13
Original geschrieben von WYSIIB
-uuser wirklich alles so zusammen geschrieben? parameter und wert?

ja, einfach hintereinander.

-j

WYSIIB
13.06.03, 15:53
danke funktioniert :)

WYSIIB
13.06.03, 16:38
//sorry kann gelöscht werden, mein fehler