不管在哪一個項目中,數據永遠是重要的,不可忽視的,但也是鬧心的。何謂之鬧心?且聽我慢慢道來。html
數據庫的更迭如今變得非常頻繁,從之前的關係型數據庫到如今的非關係型數據庫,從之前單一的使用到如今多個的搭配,能夠看到,數據若是想要進行遷移,將會困難重重,麻煩不斷,首先就要面對數據庫的差別,其次是表字段的不一樣,最後還有主鍵ID的生成問題等等。因此,一套簡單實用的方法在這個時候就很必要了,不但能大大的減小工做量,還能保證數據的完整性,何樂而不爲呢?下面就來一一解讀:mysql
1、excel表格函數vlookupsql
一、什麼是vlookup數據庫
在整理數據前,首先要作的確定是將以前的數據庫表導到excel表格中,這種基本的操做這裏就不演示了。在整理數據時,不少字段須要進行變換,這是一項重複性很高的操做,若是不利用excel特有的函數來處理的話,將非常麻煩且使人頭痛。vlookup函數的好處在於能夠快速且方便的查找,將兩個表格關聯進行跨表引用,很是實用,語法規則以下:函數
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)spa
參數 | 簡單說明 | 輸入數據類型 |
---|---|---|
lookup_value | 要查找的值 | 數值、引用或文本字符串 |
table_array | 要查找的區域 | 數據表區域 |
col_index_num | 返回數據在查找區域的第幾列 | 正整數 |
range_lookup | 模糊匹配/精確匹配 | TRUE(或不填)/FALSE |
參數說明:.net
Lookup_value爲須要在數據表第一列中進行查找的數值。Lookup_value 能夠爲數值、引用或文本字符串。當vlookup函數第一參數省略查找值時,表示用0查找。excel
Table_array爲須要在其中查找數據的數據表。使用對區域或區域名稱的引用。htm
col_index_num爲table_array 中查找數據的數據列序號。col_index_num 爲 1 時,返回 table_array 第一列的數值,col_index_num 爲 2 時,返回 table_array 第二列的數值,以此類推。若是 col_index_num 小於1,函數 VLOOKUP 返回錯誤值#VALUE!;若是 col_index_num 大於 table_array 的列數,函數 VLOOKUP 返回錯誤值#REF!。事件
Range_lookup爲一邏輯值,指明函數 VLOOKUP 查找時是精確匹配,仍是近似匹配。若是爲false或0 ,則返回精確匹配,若是找不到,則返回錯誤值 #N/A。若是 range_lookup 爲TRUE或1,函數 VLOOKUP 將查找近似匹配值,也就是說,若是找不到精確匹配值,則返回小於 lookup_value 的最大數值。若是range_lookup 省略,則默認爲近似匹配。
簡單的來講,VLOOKUP函數是Excel中的一個縱向查找函數,在工做中都有普遍應用,例如能夠用來覈對數據,多個表格之間快速導入數據等函數功能。功能是按列查找,最終返回該列所需查詢列序所對應的值。
二、vlookup函數的使用
先選定須要查詢的值,而後選擇要查詢的區域(同時打開兩張表格,必須是和要查詢的值有關聯的,不然查詢不到),最後選擇須要的數據的所在列和查詢樣式(通常用0),以下圖所示:
具體的使用步驟能夠參考:http://www.jb51.net/office/excel/350609.html,多使用幾回就熟能生巧了,挺實用的。
2、mysql定時執行
整理好數據後須要導入表,但因爲主鍵ID的惟一性,須要在導入後生成各自的ID。首先將要導入的表的主鍵勾選去掉(否則導入會失敗,mysql數據庫是這樣的),導入整理好的excel數據,導入成功後發現這些數據的ID均爲空,因此還要進行ID的生成(生成ID後將表的主鍵勾選保存)。
具體的操做步驟以下:
(1)查看event是否開啓:
show variables like '%sche%';
(2)將事件計劃開啓:
set global event_scheduler =1;
(3)建立存儲過程test(其中一個爲例,須要根據狀況進行修改):
CREATE PROCEDURE test()
BEGIN
UPDATE sy_city SET CITY_ID=REPLACE(UUID(),'-','')
WHERE CITY_ID= (SELECT CITY_ID FROM (SELECT * FROM
sy_city s WHERE s.CITY_ID='' LIMIT 1) a);
END;
(4)建立event e_test(下面的test()是上面第三步中建立的test):
create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
通過以上步驟後基本完成ID的生成。
詳情可查閱連接:http://database.51cto.com/art/201006/204716.htm,根據須要修改。