0

我需要上传一个 .csv 文件并将记录保存在 bigtable 中。我的应用程序成功解析了 csv 文件中的 200 条记录并保存到表中。

这是我保存数据的代码。

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 中做到这一点?

(类似于批量更新)

4

2 回答 2

2

GAE 将您的应用请求限制为 30 秒,并且您不能运行长任务。

最好的方法是将此 CSV 拆分为更小的块,并一个接一个地单独处理它们。如果您只能将其作为一个大文件上传,您可以将其存储为二进制数据,然后使用任务队列进行处理(拆分和解析) (注意,每个请求也限制为 10 分钟,但您始终可以一系列任务)。或者您可以用户后端进行处理。

于 2010-05-18T07:42:50.620 回答
0

您可以将 CSV 文件存储在 Blobstore 中(无论是否压缩),并使用MapReduce 作业来读取和保存数据存储中的每一行。

于 2013-02-20T04:56:04.267 回答