最近項目須要改動比較大,數據庫結構也有所改變,這時就須要轉移舊數據到新庫中mysql
第一時間想到的是用代碼操做,因爲兩個庫表結構不一樣,實體什麼的得須要從新生成sql
並編寫轉移代碼,這將是很大的工做量;數據庫
而後就想着安全
用腳本解決問題,方式以下:bash
先編寫腳本服務器
#!/bin/bash # Define log TIMESTAMP=`date +%Y%m%d%H%M%S` LOG=call_sql_${TIMESTAMP}.log echo "Start execute sql statement at `date`." >>${LOG} # execute sql stat mysql -u**** -p**** -e " tee /home/credit_back/temp.log #轉移用戶登陸表 INSERT IGNORE INTO credit_db.c_user_login_info(username, password, enabled, realname, phone, company, registration_time, last_login_time, dk_id, channel_id) SELECT username, password, enabled, realname, phone, company, registration_time, last_login_time, dk_id, channel_id FROM credit.c_user_login_info; #更新註冊來源,帳號狀態 UPDATE credit_db.c_user_login_info SET register_source='h5',account_status=1 WHERE register_source is null; notee quit" echo -e "\n">>${LOG} echo "below is output result.">>${LOG} cat /home/credit_back/temp.log>>${LOG} echo "script executed successful.">>${LOG} exit;
而後寫定時任務執行該腳本測試
連接數據庫服務器,輸入命令ui
crontab -e
編寫定時任務spa
#定時調用腳本,每小時執行一次 0 */1 * * * /bin/sh /home/credit_back/credit_db_backup.sh
查看定時任務code
crontab -l
這種方式是能夠解決問題,可是腳本中須要數據庫密碼,爲了安全我
採用navcat編寫定時任務
首先,打開navcat,查詢定時任務是否開啓
show variables like '%sche%';
此時是關閉的,須要開啓
set global event_scheduler = ON
定時任務開啓後,開始編寫存儲過程
如何編寫能夠搜一下,下面是個人存儲過程
最後編寫定時任務,右擊新建事件
即調用剛纔寫的存儲過程
CALL TransferData()
設置定時計劃,爲了測試,每分鐘執行一次
下面就等待1分鐘看執行結果了