2014-02-13 2 views
0

первым извините меня за мой английский я из швейцарии :)Bash экспорта различных таблиц из 96 баз данных

мне нужна помощь с моей Баш скрипт для экспорта таблиц с разными префиксами от различных databeses MYSQL. Мне нужно экспортировать столбец с именем «introtext» из 96 баз данных и в каждом db у tablenames есть прецеденты diefferent.

С моим текущим сценарием он экспортирует только первую таблицу с первого дб, мой счетчик подсчитывает, но не изменяет имя таблицы и БД ...

имя таблицы и имя_базы_данный в переменных приведен в правом/же заказ.

Здесь мой скрипт с 4 базами данных из моей тестовой системы.

#!/bin/bash 

#MySQL Login Variablen 
user=root 
pass=pwd123 

#Tebellenname Variablen 
STRtbl="ebn8r_content,h4akd_content,vbm6h_content,fb2tz_content" 

#DB Variablen 
STRDB="DB1,DB2,DB3,DB4" 

counter=0 
countermax=95 

#IFS=',' read -a ARRAYdb <<< "$STRDB" 
#IFS=',' read -a ARRAYtbl <<< "$STRtbl" 
IFS="," 
ARRAYdb=($STRDB) 
ARRAYtbl=($STRtbl) 

while [ $counter -le $countermax ] 
do 

#Entfernt Counter von Tabellenname/remove counter from tablename 
tblcount=$ARRAYtbl[$counter] 
tbl=${tblcount%[*} 

#Entfernt Counter von DB-Namen/remove counter from dbname 
dbcount=$ARRAYdb[$counter] 
db=${dbcount%[*} 
     echo "$dbcount" 
#MySQL Abfrage Variable 
query="SELECT introtext FROM $tbl INTO OUTFILE '/tmp/$db.csv' LINES TERMINATED BY '\n';" 

#echo "$query" 
     echo "Counter= $counter" 
#Abfrage zusammenstellen und ausführen/build the full mysql query 
for table in $(mysql -u$user -p$pass -D$db -Be "SHOW TABLES"); do 
     echo "exporting $db" 
mysql -u$user -p$pass -D$db -Be "$query" 

counter=$[$counter +1] 

     echo "$ARRAYdb[$counter]" 
done 
done 
     echo "Export abgeschlossen" 

ответ

1

Чтобы получить доступ к элементу массива, вы должны положить {} вокруг переменной:

tbl=${ARRAYtbl[$counter]} 

db=${ARRAYdb[$counter]} 
+0

С TBL = $ {tblcount% [*} я удалить номер "[п]" из таблицы и имя db, чтобы использовать его в запросе – sip

+0

В таблице не должно быть '[n]'. Доступ к элементу массива только извлекает это значение. – Barmar

+0

, когда я добавляю {}, как ваш пример, mysql can not читает таблицу и имя db ... тогда запрос выглядит так: SELECT introtext FROM INTO OUTFILE '/tmp/.csv' LINES TERMINATED by '\ n'; – sip

Смежные вопросы