54 Stimmen

mysql-Abfrageausgabe in eine Shell-Variable speichern

Ich benötige eine Variable, die die aus der Datenbank abgerufenen Ergebnisse enthält. Bisher ist dies im Grunde, was ich versuche, mit keinem Erfolg.

myvariable=$(mysql database -u $user -p $password | SELECT A, B, C FROM table_a)

Wie Sie sehen können, kenne ich mich mit Bash-Befehlen nicht besonders gut aus.

5voto

Ivan Mendoza Punkte 41

Andere Möglichkeit:

Ihr Skript:

#!/bin/sh

# Set these variables
MyUSER="root"   # DB_USERNAME
MyPASS="yourPass"   # DB_PASSWORD
MyHOST="yourHost"    # DB_HOSTNAME
DB_NAME="dbName"
CONTAINER="containerName" #if use docker

# Get data
data=$($MyHOST -u $MyUSER -p$MyPASS $DB_NAME -h $CONTAINER -e "SELECT data1,data2 from table_name LIMIT 1;"  -B --skip-column-names)

# Set data
data1=$(echo $data | awk '{print $1}')
data2=$(echo $data | awk '{print $2}')

# Print data
echo $data1 $data2

3voto

puchrojo Punkte 31
myvariable=$(mysql database -u $user -p$password | SELECT A, B, C FROM table_a)

ohne das Leerzeichen nach -p . Es ist trivial, aber ohne geht's nicht.

2voto

Prasad Tamgale Punkte 267

Wenn Sie einen bestimmten Datenbanknamen und einen Host haben, auf dem die Abfrage ausgeführt werden soll, folgen Sie der folgenden Abfrage:

outputofquery=$(mysql -u"$dbusername" -p"$dbpassword" -h"$dbhostname" -e "SELECT A, B, C FROM table_a;" $dbname)

Um die Mysql-Abfragen auszuführen, müssen Sie den Mysql-Client auf Linux installieren

0voto

Dima Punkte 1
myvariable=$(mysql -u user -p'password' -s -N <<QUERY_INPUT
    use databaseName;
    SELECT fieldName FROM tablename WHERE filedName='fieldValue';
QUERY_INPUT
)
echo "myvariable=$myvariable"

0voto

Sanya Snex Punkte 892

Ein weiteres Beispiel, wenn der Tabellenname oder die Datenbank nicht unterstützte Zeichen wie ein Leerzeichen oder '-' enthält

db='data-base'

db_d=''
db_d+='`'
db_d+=$db
db_d+='`'

myvariable=`mysql --user=$user --password=$password -e "SELECT A, B, C FROM $db_d.table_a;"`

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X