1. 程式人生 > 其它 >記一次給一個60萬條資料的EXCEL,把EXCEL裡的資料匯入到mysql的表中

記一次給一個60萬條資料的EXCEL,把EXCEL裡的資料匯入到mysql的表中

由於是新系統切換,老系統有歷史資料,需要進行割接,然後業務方給了一個60萬資料的excel,領導讓我匯入到現網資料庫中去。我當時的想法是,通過java的poi工具類解析excel,然後生成insert into的sql放到現網的sql工具類上去執行。花費了兩個多小時,工具類寫好了,程式碼測試完畢,準備切換到60萬資料時候,發現解析不出來了,頭大。後面在百度上找到可以通過excel的公式功能快速拼接insert into語句。最後不到半小時就解決了這個60萬資料匯入的問題。我記錄下解決的過程:

1、業務方給的excel需要重新複製到一個新的EXCEL中,我不知道為啥,輸入的計算公式就是不生效

2、編寫自己想要生成的insert into sql:

="INSERT INTO t_user_gray_his (JOIN_TIME,ACCOUNT,PHONE,`ADD_CREATE_STAFFID`, `DEL_CREATE_STAFFID`, `USER_TYPE`) VALUES(STR_TO_DATE('"&A2&"','%d/%m/%Y %H:%i:%s') ,'"&B2&"' ,'"&C2&"','admin','admin','0');"

其中,&A2&表示JOIN_TIME所在單元格位置,&B2&表示ACCOUNT所在單元格位置,以此類推。。。

生成的sql語句如下:

INSERT INTO t_user_gray_his (JOIN_TIME,ACCOUNT,PHONE,`ADD_CREATE_STAFFID`, `DEL_CREATE_STAFFID`, `USER_TYPE`) VALUES(STR_TO_DATE('1/4/2019 00:00:00','%d/%m/%Y %H:%i:%s') ,'Z8B42DB46E4D' ,'13402921111','admin','admin','0');

3、可以通過拖住滑鼠郵件下拉,來自動填充,我60萬資料,這樣肯定是不行的,後面發現,可以先複製,然後shift+第一行+最後一行,然後貼上,公式全部自動填充

4、把生成sql語句拷貝出來,生成一個.sql檔案,excel中可能直接拷貝不出,需要先拷貝,然後另起一列,貼上為值,然後才可以拷貝出來

如果只匯入一列的話,可以通過notepad工具的alt+c列編輯功能,但是靈活性較差,先把一列資料複製到notepad中,然後alt+c啟用列編輯,簡單來說,就是複製你輸入的字元,沒行都一樣。

知人者智,自知者明,勝人者有力,自勝者強。