Question

J'ai besoin de télécharger un fichier .csv et enregistrer les enregistrements dans BigTable. Mon application avec succès 200 dossiers parser dans les fichiers csv et enregistrer à la table.

Voici mon code pour enregistrer les données.

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

Mais lorsqu'il n'y a pas d'enregistrements croître donne erreur de délai d'attente.

Le fichier csv peut avoir jusqu'à 800 dossiers. Est-il possible de le faire dans l'App-Engine?

(quelque chose comme mise à jour batch)

Était-ce utile?

La solution

limite GAE vous application demande à 30 secondes, et vous ne pouvez pas exécuter la tâche longue.

meilleure approche est de diviser ce CSV en petits morceaux et de les traiter individuellement, l'un après l'un. Dans le cas où vous pouvez le télécharger seulement comme un seul gros fichier, vous pouvez le stocker sous forme de données binaires, puis processus (split et parse) en utilisant Task Queue (Notez qu'il est également limité à 10 minutes par demande, mais vous pouvez toujours faire une chaîne de tâches). Ou vous pouvez backend utilisateur à traiter.

Autres conseils

vous pouvez stocker votre fichier CSV dans le Blobstore ( gzip ou pas ) et utiliser un MapReduce travail à lire et persistent chaque ligne dans le magasin de données

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top