Pergunta

Preciso fazer upload de um arquivo .csv e salvar os registros no BigTable. Meu aplicativo analisa com sucesso 200 registros nos arquivos CSV e salve na tabela.

Aqui está o meu código para salvar os dados.

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();
  }
    }
    }
}

Mas quando nenhum dos registros cresce, dá um erro de tempo limite.

O arquivo CSV pode ter até 800 registros. É possível fazer isso no mecanismo de aplicativos?

(algo como atualização em lote)

Foi útil?

Solução

GAE Limite seu aplicativo Solicitação para 30 segundos e você não pode executar uma tarefa longa.

A melhor abordagem é dividir esse CSV em pedaços menores e processá -los individualmente, um após um. No caso em que você pode enviá -lo apenas como um grande arquivo, você pode armazená -lo como dados binários e depois processar (dividir e analisar) usando Fila de tarefas (Observe que também está limitado a 10 minutos por solicitação, mas você sempre pode fazer uma cadeia de tarefas). Ou você pode usar o back -end para o processo.

Outras dicas

Você pode armazenar seu arquivo CSV na Blobstore (Gzipped ou não) e use um MapReduce Job ler e persistir cada linha no armazenamento de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top