3

列名を持つ構造化された形式で、bash の SELECT 要求の出力をエコーし​​ようとしています。問題は、2 つ以上のフィールドがある場合、または値が列名よりも大きい場合、適切に実行できないことです。

例 :

私のテーブルは次のようになります: value1 value2

bash で行う場合: echo "select value1, value2 from table" | mysql -uUSER -pPASS

結果は bash で次のようになります。

値1 値2
広告  
なれ
cf

3 つのフィールドまたは大きな値がある場合、結果は次のようになります。

値1 値2 値3
アアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアア
bbbb eeeeeeeee hhhh
ccccccc fffffffff iii

構造化された結果を得る簡単な方法はありますか? 列名が正しく配置されているということですか?最大値を取得し、必要なスペースの数を追加するために並べ替えを実行できることはわかっていますが、このような単純な問題には多すぎるようです。

アイデアはありますか?ありがとう !

4

3 に答える 3

4

mysql -e オプションを使用してクエリを実行し、-t オプションを使用してテーブル出力を標準出力に出力します。

mysql -uUSER -t -e "テーブルから value1、value2、value3 を選択" -pPASS

出力は次のようになります。

+-----------+-------------+--------+
| value1    | value2      | value3 |
+-----------+-------------+--------+
| aaaaaaaaa | ddddddddddd | ggg    |
| bbbb      | eeeeeeeee   | hhhh   |
| ccccccc   | fffffffff   | iiii   |
+-----------+-------------+--------+

mysqlマンページから:

--execute=statement, -e statement

       Execute the statement and quit. The default output format is like that produced with --batch. See Section 4.2.3.1, “Using Options on
       the Command Line”, for some examples. With this option, mysql does not use the history file.

-table, -t

       Display output in table format. This is the default for interactive use, but can be used to produce table output in batch mode.
于 2013-07-06T13:23:26.980 に答える
1
echo "select value1, value2 from table" | mysql -uUSER -pPASS | column -t
于 2013-07-06T15:40:49.233 に答える
0

これを行う良い方法は、Echo を使用せずにすべてを Web ページに出力することです。代わりに、Each に配列変数を割り当てる必要があります。

次のようになります。

int x[50];

x[i] = $value // which is from SELECT Query
i++

それをループに入れて、毎回結果が配列の新しい場所に保存されるようにします。すべての結果を配列に保存すると、整理がはるかに簡単になります。Table in HTML を使用できます。

<table />

変数の配列を簡単にループに入れることが効率的になるように整理すると、基本的に2つのループができます。最初のループは配列をデータベースの属性に割り当て、2 番目のループは HTML のテーブル内に印刷するためのものです。

于 2013-07-06T12:11:41.340 に答える