Mit bash mysql in Schleife abfragen

Dieses Thema im Forum "SQL und Datenbanken" wurde erstellt von mopsy, 06.01.2011.

  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. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #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}))`
     
  4. 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.
     
  5. #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
    
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Mit bash mysql in Schleife abfragen

Die Seite wird geladen...

Mit bash mysql in Schleife abfragen - Ähnliche Themen

  1. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....
  2. Bashscript aus Debian6 läuft nicht auf Debian7

    Bashscript aus Debian6 läuft nicht auf Debian7: Hallo an alle, nachdem ich ein Skript von squeeze auf wheezy kopiert habe und ausführte, erschienen gleich wilde Fehlermeldungen, nach denen ich...
  3. Bash sucht neues Logo

    Bash sucht neues Logo: Die GNU Bourne Again Shell (bash) sucht nach knapp 20 Jahren ein neues, individuelles Logo. Alle Anwender und Interessenten sind deshalb...
  4. Mit bash Skript bestimmte Werte aus Tabelle lesen

    Mit bash Skript bestimmte Werte aus Tabelle lesen: Hallo! Ich beschäftige mich erst seit Kurzem mit bash und bin deshalb noch nicht so fit darin. Und nun habe ich schon ein kleines Problem und...
  5. Bash: Geteiltes Fenster mit unterschiedlichen Funktionen

    Bash: Geteiltes Fenster mit unterschiedlichen Funktionen: Hallo Leute, ist es in Bash möglich, zwei Funktionen in zwei getrennten Teilen eines Terminalfensters ablaufen zu lassen? Da Bash die Befehle...