公司新平臺上線,老數據庫中有一些本來的用戶數據須要遷移到新平臺,特意開發這個腳本,以保證數據的完整性,以及效率性 #!/bin/bash ##到出舊數據庫中須要的表 echo "請在腳本語言目錄下準備3個文件,一個爲tables.txt,裏面列出須要從舊數據庫中導出的表名,另外一個是oldmysqlauth舊數據庫的用戶帳號密碼以及數據庫,第三個是newmysqlauth新數據庫的用戶帳號密碼以及數據庫,分別列出格式爲: 1 2 3 ..." counts=`awk 'BEGIN{t=0;} { t++; } END{print t; }' tables.txt` i=1 mkdir sql if [ -e tables.txt ] && [ -e oldmysqlauth ] && [ -e newmysqlauth ]; then while [ $i -le $counts ]; do table=`awk -v awk_i="$i" 'NR==awk_i{print}' tables.txt`; /usr/bin/mysqldump -u`awk 'NR==1{print}' oldmysqlauth` -p`awk 'NR==2{print}' oldmysqlauth` `awk 'NR==3{print}' oldmysqlauth` $table > sql/$table.sql i=$((i+1)) done else echo "程序須要文件不完整,請檢查" fi echo "已經將您須要的表從舊的數據庫中導出,即將進行數據表還原" ##將舊數據庫中導出的表導入新數據庫中 k=1 if [ -e tables.txt ] && [ -e oldmysqlauth ] && [ -e newmysqlauth ]; then while [ $k -le $counts ]; do table=`awk -v awk_k="$k" 'NR==awk_k{print}' tables.txt`; /usr/bin/mysql -u`awk 'NR==1{print}' newmysqlauth` -p`awk 'NR==2{print}' newmysqlauth` `awk 'NR==3{print}' newmysqlauth` < /root/datapopulate/sql/$table.sql k=$((k+1)) done else echo "程序須要文件不完整,請檢查" fi echo "已經將舊數據庫中的表遷移到新的數據庫中,謝謝使用!"