2013-04-11 87 views
0

即時嘗試從SQL服務器獲取我的維度到MongoDB中,我可以這樣做,但然後我必須爲每個維度編寫代碼,這很費時。一些代碼片段:如何從SQL服務器維度中獲取數據到mongoDB

Mongo mongo = new Mongo(); 
DB db = mongo.getDB("Nelly"); 
DBCollection facil = db.getCollection("Facilities"); 

while (r.next()) { 
BasicDBObject facObj = new BasicDBObject(); 

String faccKey = (r.getString("dim_Facilities_dKey")); 
if (faccKey != null && !faccKey.trim().isEmpty() 
&& faccKey.length() != 0) 
facObj.append("dKey", faccKey); 

facil.insert(facObj); 

但我希望能夠以某種循環和列表的做快,但我無法弄清楚如何解決這個問題,我已經嘗試了一切!

while(r.next()){ 

for (int i = 1; i < columnCount + 1; i++) { 

HashMap<String, ArrayList<String>> hashmap = new HashMap<String, ArrayList<String>>(); 
ArrayList<String> arr=new ArrayList<String>();  
arr.add(r.getString(i)); 


BasicDBObject facObj = new BasicDBObject(); 
String name = rsmd.getColumnName(i); 
int varde=1; 
String data =r.getString(varde); 
varde++; 
arr.add(data); 

hashmap.put(name, arr); 

facObj.append(name, hashmap.values().toString()); 
facil.insert(facObj); 

有人可以給我如何繼續前進的意見嗎?

在此先感謝

我解決了它:

ResultSet r = s.executeQuery(); 
ResultSetMetaData rsmd = s.getMetaData(); 
int columnCount = rsmd.getColumnCount(); 

while (r.next()) { 
BasicDBObject facObj = new BasicDBObject(); 
for (int i = 1; i < columnCount + 1; i++) { 

String name = rsmd.getColumnName(i); 

String faccKey = (r.getString(i)); 
if (faccKey != null && !faccKey.trim().isEmpty() && faccKey.length()!= 0) 
facObj.append(name, faccKey); 

} 
facil.insert(facObj);} 
+0

你不應該轉移專爲關係數據庫中的面向文檔的數據庫的數據庫架構。他們如何構造數據的哲學根本不同。 – Philipp 2013-04-11 15:46:57

+0

代碼片段中的變量'r'究竟是什麼?一些迭代器,我按下了,但迭代到底是什麼? – Philipp 2013-04-11 15:48:52

+0

ResultSet r = s.executeQuery(); – glaring 2013-04-11 15:51:14

回答

0

這樣的任務通常是由ETL工具,它是專門做它,可以給你更好的性能和可管理性來完成。

問候, Moacy