Mit bash mysql in Schleife abfragen

Diskutiere Mit bash mysql in Schleife abfragen im SQL und Datenbanken Forum im Bereich Netzwerke & Serverdienste; Servus @all, ich habe jetzt die ganze Nacht gekämpft, aber es will nicht wie ich mir das vorstelle. Meine Tabelle: id int(11) NOT NULL...

  1. mopsy

    mopsy Grünschnabel

    Dabei seit:
    06.01.2011
    Beiträge:
    2
    Zustimmungen:
    0
    Servus @all,

    ich habe jetzt die ganze Nacht gekämpft, aber es will nicht wie ich mir das vorstelle.

    Meine Tabelle:
    Code:
    id int(11) NOT NULL AUTO_INCREMENT,
    userid smallint(4) NOT NULL,
    email varchar(100) NULL,
    joo tinyint(1) NOT NULL,
    joo_db tinyint(2) UNSIGNED ZEROFILL NOT NULL,
    joo_date int(10) NULL DEFAULT 1,
    joo_folder varchar(30) NOT NULL,
    gsa tinyint(1) NOT NULL,
    gsa_db tinyint(2) UNSIGNED ZEROFILL NOT NULL,
    gsa_date int(10) NULL DEFAULT 1,
    gsa_folder varchar(30) NOT NULL,
    PRIMARY KEY (id)
    Darin die Werte die ich für automatisierte Updates brauche
    1,1001,mail@example.com,1,01,1234567890,docs,1,05,1234567890,docs/example
    So sollte das ganze laufen, das /bash Script rufe ich mit Parametern auf zB. joo wenn ich nur Werte für joo brauche
    Code:
    tmpifs="$IFS"
    IFS="\n"
    query1=($(echo "use ${mysqldb}; SELECT userid FROM ${table} WHERE ${1}=1;" | mysql -s -h ${mysqlhost} -u ${mysqluser} -p${mysqlpass}))
    for i in ${query1[@]}
      do
        query2=($(echo "use ${mysqldb}; SELECT userid,email,${1},${1}_db,${1}_date,${1}_folder FROM ${table} WHERE ${1}=1 AND userid=${i};" | mysql -s -h ${mysqlhost} -u ${mysqluser} -p${mysqlpass}))
        # Was auch immer...
        echo mydb="${query2[3]}"
        # usw.
      done
    IFS="$tmpifs"
    Die Qeurys laufen wohl durch, die Werte im Array sind aber nicht in meiner Variablen. Kann mir bitte mal jemand auf die Sprünge helfen

    Stephan
     
  2. #2 xbeduine, 07.01.2011
    xbeduine

    xbeduine ausgesperrt

    Dabei seit:
    09.09.2007
    Beiträge:
    142
    Zustimmungen:
    0
    Probiers mal so (mit Backticks `):
    Code:
    query1=`($(echo "use ${mysqldb}; SELECT userid FROM ${table} WHERE ${1}=1;" | mysql -s -h ${mysqlhost} -u ${mysqluser} -p${mysqlpass}))`
     
  3. mopsy

    mopsy Grünschnabel

    Dabei seit:
    06.01.2011
    Beiträge:
    2
    Zustimmungen:
    0
    Servus,

    Danke, an den Backticks scheint es nicht zu liegen, sondern eher an meinem doppelten select. Ich habe das jetzt auf einen select reduziert, aber wie komme ich an die Anzahl der Datensätze, bzw. wie muss ich mysql_num_rows in bash verwenden? Alle notwendigen Datensätze habe ich jetzt in meinem query und kann mit ${query[0,1,2 usw.]} auf die Werte zugreifen, jetzt soll die Schleife nur noch alle Datensätze nacheinander durchlaufen, dafür brauche ich jetzt wohl die Anzahl mit mysql_num_rows.
     
  4. #4 Yoda, 02.03.2011
    Zuletzt bearbeitet: 02.03.2011
    Yoda

    Yoda [Linux|FreeBSD] - User

    Dabei seit:
    24.03.2006
    Beiträge:
    51
    Zustimmungen:
    0
    Ort:
    Taunus
    Ich würde das so machen:
    Code:
    #!/bin/bash
    
    table=""
    mysqlhost=""
    mysqluser=""
    mysqlpass=""
    mysqldb=""
    
    echo "SELECT userid FROM ${table} WHERE ${1}=1;" | mysql -N -h ${mysqlhost} -u ${mysqluser} -p${mysqlpass} ${mysqldb} | while read USERID
    do
        echo "SELECT userid,email,${1},${1}_db,${1}_date,${1}_folder FROM ${table} WHERE ${1}=1 AND userid=${USERID};" | mysql -Nt -h ${mysqlhost} -u ${mysqluser} -p${mysqlpass} ${mysqldb} | sed '/^[+-]*$/d;s/[ ]*|[ ]*/","/g;s/^",//;s/,"$//;s/\n//g' | while read DBZEILE
        do
            # Was auch immer...
            echo "mydb=${DBZEILE}"
            # usw.
        done
    done
    
     
Thema: Mit bash mysql in Schleife abfragen
Besucher kamen mit folgenden Suchen
  1. bash mysql abfrage

Die Seite wird geladen...

Mit bash mysql in Schleife abfragen - Ähnliche Themen

  1. Frage zu Bash Script mit Grep Ausgabe

    Frage zu Bash Script mit Grep Ausgabe: Hallo Zusammen, ich schreibe gerade in Bash ein Script, mit dem ich eine Ausgabe per Grep filtere, nun ist es so - dass ich allerdings zwei...
  2. Falsches Heimatverzeichnis in der Bash

    Falsches Heimatverzeichnis in der Bash: Hallo Leute, wenn ich ein Terminal öffne und mich via "su marcel" anmelde startet die Promt im /root verzeichnis. Gebe ich echo $HOME ein kommt...
  3. [gelöst] bash, cut - wahrscheinlich die 1000.

    [gelöst] bash, cut - wahrscheinlich die 1000.: Hallo Forum, seit mehr als drei Tagen drehe ich mich im Kreis, da ich bei google & co augenscheinlich nicht die richtigen Fragen stelle. Mein...
  4. Minimal bash-like...hilfe

    Minimal bash-like...hilfe: Hi erstmal^^ Habe probiert mint zu installieren auf meinen Acer Travelmate b118. Nun, es hat irgendwie funktioniert und der gute wollte mal...
  5. Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

    Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?): Hallo Leute :) Ich habe heute eine E-Mail bekommen und zwar für ein Telefoninterview am übermorgen und ich bin da recht nervös, vor allem am...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden