0

何百もの MySQL テーブルがあり、各 MySQL テーブルの最初の列で ASCII テーブルを作成したいと考えています。

MySQL テーブルから

table A          table B  ...  table Z
A1 A2 A3         B1 B2 B3      Z1 Z2 Z3
A1 A2 A3         B1 B2 B3      Z1 Z2 Z3
A1 A2 A3         B1 B2 B3      Z1 Z2 Z3

アスキーファイルに

A1 B1 ... Z1
A1 B1 ... Z1
A1 B1 ... Z1

より速い方法はどれですか?

テーブルは数百、列には数千行、ほとんどの列には同じ行数があります (したがって、エクスポート前の「結合」は必要ないと思います)

どうもありがとう

4

1 に答える 1

0

私はbashの専門家ではありませんが、段階的に物事を進めています(他の専門家が私の回答を編集および改善できます)

#!/bin/bash
mysql -uusrname -ppassword -Ddatabasename -s -e 'show tables'
 count=0
while read tablenames
do
 fieldname=$(mysql -uusrname -ppassword -Ddatabasename -s -e "desc $tablename" | head -2 | tail -1  | awk -F " " '{print $1}');
 echo "$tablenames,$fieldname" >> tempfile
done< $(mysql -uusrname -ppassword -Ddatabasename -s -e 'show tables')
lastcount=$(wc -l tempfile)
while read line
 do
 count=$(($count + 1))
 if [ $count -eq 1 ] 
 then
 echo "nothing to do"
 elif [ $count -lt $lastcount ]
 then
 echo $line | awk -F "," '{print "(select "$2 "from" $1")"}' >> sqlcommand.sql
 echo "union" >> sqlcommand.sql
 else 
   echo $line | awk -F "," '{print "(select "$2 "from" $1");"}' >> sqlcommand.sql
 done < tempfile

 mysql -uusrname -ppassword -Ddatabasename << sqlcommand.sql >> outputasciifile.txt
于 2013-11-05T07:56:00.887 に答える