第一次寫部落格, 希望能幫到別人, 同時願意相互進行一些討論, 互相進步。
最近在做有關專案的時候, 由於伺服器資料庫被其他人演算法讀取, 導致我讀取的時候很慢, 於是乎打算將自己需要的表匯入到本地的mysql資料庫進行處理, 剛開始當然是不想寫**, 嘗試用kettle實現表遷移, 但是無奈資料量較大, 可kettle記憶體溢位。 痛下決心自己實現。
基本思路就是先從資料庫中抽取出資料儲存到resultset的乙個集合中, 乙個next, 存到乙個list < list < string >> ,為避免記憶體溢位, 設定陣列大小超過乙個閾值就寫入資料庫, 然後清空又重新讀取, 在寫入。 其實這個也是借鑑於kettle的提交size;
首先是分別建立mysql和oracle的鏈結方法。
oracle資料連線
public static connection getconnection() catch (classnotfoundexception e)
try catch (sqlexception e)
return conn;
}
其實mysql方法和oracle一樣的, 只是換成mysql的驅動和資料庫罷了:
class.forname("com.mysql.jdbc.driver");
string url = "jdbc:mysql://localhost:3306/spider";
string user = "root";
string password = "***";
然後是抽取資料了:
public static list < list < string >> tableinput() throws filenotfoundexception,
sqlexception ;
int i = 0;
while (resultset.next())
findlist.add(minlist);
i++;
if (i % 10000 == 0)
}executemanysql(findlist); //最後別忘了提交剩餘的
return findlist;
} catch (sqlexception e) finally catch (sqlexception e)
try catch (sqlexception e)
} return null;
}
executemanysql(findlist) 函式如下, 因為資料量比較大, 所以我設定的每次提交大小為10000, 這樣就不會記憶體溢位了。
public static void executemanysql(list < list < string >> findlist) throws sqlexception
// 把乙個sql命令加入命令列表
pst.addbatch();
} // 執行批量更新
pst.executebatch();
// 語句執行完畢,提交本事務
con.commit();
pst.close();
con.close(); //一定要記住關閉連線,不然mysql回應為too many connection自我保護而斷開。
}
同時我還設定了計時的函式, 可以看到這個從資料抽取到完成資料遷移的時間。
public static void main(string args) throws filenotfoundexception,
sqlexception
其實用時真不好說, 這個和程式本身、 抽取資料的主機以及本機的硬碟讀取速度有比較大的關係。
最終我抽取的資料是84800000, 將近2g的資料, 用時: 00: 57: 13: 313, 五十七分鐘還是可以了。
Java實現Oracle到MySQL的表遷移
第一次寫部落格,希望能幫到別人,同時願意相互進行一些討論,互相進步。最近在做有關專案的時候,由於伺服器資料庫被其他人演算法讀取,導致我讀取的時候很慢,於是乎打算將自己需要的表匯入到本地的mysql資料庫進行處理,剛開始當然是不想寫 嘗試用kettle實現表遷移,但是無奈資料量較大,可kettle記憶...
python實現通用excel匯入到mysql
file 要處理的 檔案 startrow 從第幾行開始匯入 table 匯入到哪個表 comitcount 多少筆一提交 由於資料庫對sql長度是有限制的,不建議設定太大 map 表字段與excel列的對映關係 import math import xlrd import json from db...
使用kettle匯入excel資料到mysql
kettle跑起來,要求有jre環境。另外,如果連線mysql資料庫的話,kettle本身是不包含mysql連線的jar,需要你手動放到安裝目錄的lib目錄下。如果是kettle啟動後放入的,需要重啟一下kettle。資料庫表設計圖 其中 id是主鍵 role code是角色 匯入時,根據excel...