谷歌的应用程序引擎Java批次更新
-
27-09-2019 - |
题
我需要上。csv文件和保存记录在大表.我申请成功地分析200个记录在csv文件和保存表。
这里是我的代码保存的数据。
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记录。这是可以做到的,在应用程序的发动机?
(喜欢的东西批次更新)
解决方案
再限制应用程序的请求30秒,你不能运行长期任务。
最好的方法是分裂这个CSV成小块,并处理他们的个人,一个接一个。在这种情况时可以上载其仅仅作为一个很大的文件,可以储存其作为二进制数据,然后进程(分裂和分析)的使用 任务的队列 (注意,这也限于10分钟,每请求,但你总是可以做一个链的任务)。或者你可以用后端程序。
其他提示
你可以存储CSV文件在Blobstore(压缩 或 不)和使用 Map/reduce的工作 阅读和持续存在的每条线数据存储库。
不隶属于 StackOverflow