2010-05-18 63 views
0

我需要上載.csv文件並以bigtable格式保存記錄。 我的應用程序成功解析了csv文件中的200條記錄並保存到表中。Google App-Engine Java批量更新

這是我的代碼來保存數據。

for (int i=0;i<lines.length -1;i++) //lines hold total records in csv file 
{ 
    String line = lines[i]; 

    //The record have 3 columns integer,integer,Text 

    if(line.length() > 15) 
    { 
int n = line.indexOf(","); 

if (n>0) 
{ 
    int ID = lInteger.parseInt(ine.substring(0,n)); 
    int n1 = line.indexOf(",", n + 2); 

    if(n1 > n) 
    { 
    int Col1 = Integer.parseInt(line.substring(n + 1, n1)); 
    String Col2 = line.substring(n1 + 1); 

    myTable uu = new myTable(); 

    uu.setId(ID); 
    uu.setCol1(MobNo); 

    Text t = new Text(Col2);   
    uu.setCol2(t); 

     PersistenceManager pm = PMF.get().getPersistenceManager(); 
      pm.makePersistent(uu);    
    pm.close(); 
    } 
    } 
    } 
} 

但是,當沒有記錄增長它給超時錯誤。

csv文件可能有多達800條記錄。 在App-Engine中可以這樣做嗎?

(像批量更新)

回答

2

GAE限制你的應用程序請求30秒,你不能運行長期任務。

最好的辦法是將此CSV分成更小的塊,然後逐個處理它們。如果您只能將它作爲一個大文件上傳,您可以將其作爲二進制數據存儲,然後使用Task Queue進行處理(拆分和解析)(請注意,每個請求也限制爲10分鐘,但您始終可以製作一個任務鏈)。或者你可以使用後端進行處理。

+0

大......我試圖用它每分鐘運行計劃任務.. 非常感謝.. – Manjoor 2010-05-18 07:56:07

+0

使用,你可以爲30秒...... – 2013-02-19 08:39:10

+0

哦運行的時間更長後端,是的,3年內有此後端WASN」引入,甚至任務隊列被限制爲30秒。我應該更新我的答案,謝謝 – 2013-02-19 11:53:14

0

你可以存儲在Blob存儲(gzippednot)CSV文件,並使用MapReduce job閱讀並堅持在數據存儲的每一行。