سؤال

أحتاج إلى تحميل ملف .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 (gzipped أو ليس) واستخدام أ وظيفة MapReduce لقراءة واستمرار كل سطر في مخزن البيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top