標籤:mysql bash
公司新平台上線,老資料庫中有一些原本的使用者資料需要遷移到新平台,特地開發這個指令碼,以保證資料的完整性,以及效率性#!/bin/bash##到出舊資料庫中需要的表echo "請在指令碼語言目錄下準備3個檔案,一個為tables.txt,裡面列出需要從舊資料庫中匯出的表名,另一個是oldmysqlauth舊資料庫的使用者帳號密碼以及資料庫,第三個是newmysqlauth新資料庫的使用者帳號密碼以及資料庫,分別列出格式為: 1 2 3 ..."counts=`awk ‘BEGIN{t=0;} { t++; } END{print t; }‘ tables.txt`i=1mkdir 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 "程式需要檔案不完整,請檢查"fiecho "已經將您需要的表從舊的資料庫中匯出,即將進行資料表還原" ##將舊資料庫中匯出的表匯入新資料庫中k=1if [ -e tables.txt ] && [ -e oldmysqlauth ] && [ -e newmysqlauth ];thenwhile [ $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 "程式需要檔案不完整,請檢查"fiecho "已經將舊資料庫中的表遷移到新的資料庫中,謝謝使用!"
本文出自 “技術宅私人空間” 部落格,請務必保留此出處http://chulinx.blog.51cto.com/4098114/1825337
mysql資料不完整遷移指令碼