web-dev-qa-db-ja.com

bash-変数へのSQLクエリ出力

私はbashスクリプトで新しいです。 sql-queryの出力を変数に保存したいのですが、

実際には、すべてのクエリに対してmysqlに接続する必要があります。

mysql -u $MYUSER -p$MYPASS -D database

すべての出力を個別に変数に保存したい

クエリの例:SELECT domain FROM domains WHERE user='$USER'

$variable1 = FIRST_OUTPUT
$variable2 = 2ND_OUTPUT

ありがとうございました

12
mostworld77

bashスクリプト-データベースから変数に選択 から取得すると、クエリ結果を変数に読み込むことができます。

mysql> SELECT * FROM domains;
+-------+---------+
| user  | domain  |
+-------+---------+
| user1 | domain1 |
| user2 | domain2 |
| user3 | domain3 |
+-------+---------+

使用法

$ myvar=$(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")
$ echo $myvar
domain1 domain2 domain3

echoは、出力用のbashコマンドです。次に split $myvarを別の変数に

$ read var1 var2 var3 <<< $myvar
$ echo $var1
domain1
$ echo $var2
domain2

これら2つのコマンドを1つのコマンドに組み合わせることができます。

read var1 var2 var3 <<< $(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")

結果を配列に格納することが可能です(そこにレコード数がわからない場合に役立ちます)。

$ read -ra vars <<< $(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")
$ for i in "${vars[@]}"; do
$     echo $i
$ done
domain1
domain2
domain3
23
Yang

別の方法は次のとおりです。

dbquery=`mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains"`      
dbquery_array=( $( for i in $dbquery ; do echo $i ; done ) )

1行目は、クエリからのすべての出力を、配列のように変数dbqueryに格納します。 2行目は、単純なdbqueryループでforを配列dbquery_arrayに変換します。

2
3kstc

これは私がしました

変数= mysql -u root -ppassworrd database << EOF select MAX(variable) AS a from table where variable2 = 'SOMETEXT' AND day(datevalue) >= 22; EOF

それが役に立てば幸い

2
Jorge Magos