我正在执行一个 mysql 查询,在 shell 脚本中返回两列
TABLES=$($MYSQL -u $MUSER -p$MPASS -h $MHOST $MDB -e "SELECT table_name, ROUND(((data_length + index_length) / 1024 / 1024 / 1024), 2) AS table_size FROM information_schema.tables WHERE table_schema = 'inventory' AND CREATE_TIME < DATE(NOW()) -INTERVAL 7 DAY" | awk '{ print $1}' | grep -v '^table_name' )
如何将其存储在二维数组中并将结果显示为 html 表格?
作为解决方法,我正在执行两个 mysql 查询并将结果存储在两个单独的数组中
TABLES=$($MYSQL -u $MUSER -p$MPASS -h $MHOST $MDB -e "SELECT table_name FROM information_schema.tables WHERE table_schema = 'inventory' AND CREATE_TIME < DATE(NOW()) -INTERVAL 7 DAY" | awk '{ print $1}' | grep -v '^table_name' )
declare -a TABLE_SIZE=($($MYSQL -u $MUSER -p$MPASS -h $MHOST $MDB -e "SELECT ROUND(((data_length + index_length) / 1024 / 1024 / 1024), 2) AS table_size FROM information_schema.tables WHERE table_schema = 'inventory' AND CREATE_TIME < DATE(NOW()) -INTERVAL 7 DAY" | awk '{ print $1}' | grep -v '^table_size' ))
#IF there are no tables in databse
if [ "$TABLES" == "" ]
then
echo "Error - No table found in $MDB database!"
exit 3
fi
i=0
for t in $TABLES
do
#echo "Deleting $t table from $MDB database..."
str="<tr><td> $t </td><td>${TABLE_SIZE[$i]}</td></tr>"
i=`expr $i + 1`
table_array+=$str
done
table_array+="</table>"
最佳答案
如果您不需要列名,一个选项是让 mysql
使用 -H
选项和 -N
选项为您执行此操作.
mysql -H -N -u $MUSER -p $MPASS -h $MHOST $MDB < your_sql
如果您需要额外的 html 自定义,您可以这样做:
#!/bin/bash
# Set the internal file separator to newline.
IFS=$'\n'
echo "<table>"
# Loop over each row.
for line in $(mysql -N ... < your.sql)
do
echo " <tr>"
# Set the internal file separator to space/tab.
IFS=$' \t'
# Create columns array.
columns=($line)
echo " <td>${columns[0]}</td>"
echo " <td>${columns[1]}</td>"
echo " </tr>"
done
echo "</table>"
关于html - html表中的mysql输出-shell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33930532/