Вопрос

Мне нужно загрузить файл .csv и сохранить записи в bigtable. Мое приложение успешно проанализирует 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 записей. Можно ли сделать это в приложении?

(что-то вроде пакетного обновления)

Это было полезно?

Решение

GAE Ограничьте запрос приложения до 30 секунд, и вы не можете запустить длинную задачу.

Лучший подход - это разделить этот CSV на мелкие куски и обрабатывать их индивидуально, один после одного. В случае, когда вы можете загрузить его только в виде одного большого файла, вы можете хранить его как двоичные данные, а затем процесс (разделение и анализа), используя Очередь задачи (Обратите внимание, что он также ограничен 10 минут на запрос, но вы всегда можете сделать цепочку задач). Или вы можете перезапустить пользователь к обработке.

Другие советы

Вы можете хранить свой файл CSV в BlobStore (избрал или нет) и используйте MapReduce Wain. Читать и сохранить каждую строку в хранилище данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top