Frage

Ich brauche eine CSV-Datei zu laden und die Aufzeichnungen in BigTable speichern. Meine Anwendung erfolgreich 200 Datensätze in der CSV-Dateien analysieren und zu Tabelle speichern.

Hier ist mein Code, die Daten zu speichern.

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

Aber wenn keine Datensätze wachsen es Timeout-Fehler gibt.

Die CSV-Datei kann bis zu 800 Datensätze. Ist es möglich, das zu tun, in App-Motor?

(so etwas wie Batch-Update)

War es hilfreich?

Lösung

GAE Grenzen Sie App Anfrage bis 30 Sekunden, und Sie können lange Aufgabe nicht ausgeführt werden.

Best Ansatz ist es, diese CSV in kleinere Stücke aufzuteilen und verarbeiten einzeln sie, eine nach der anderen. Im Fall, wenn Sie es nur als eine große Datei hochladen, können Sie es als binäre Daten speichern, und dann verarbeiten (Split und Parse) mit

Andere Tipps

Sie könnten speichern Sie Ihre CSV-Datei in der Blobstore ( gzipped oder nicht ) und MapReduce Job jede Zeile in dem Datenspeicher zu lesen und beharren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top