0

.csv ファイルをアップロードして、レコードを bigtable に保存する必要があります。私のアプリケーションは、csv ファイル内の 200 レコードを正常に解析し、テーブルに保存します。

これがデータを保存するための私のコードです。

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 レコードを含めることができます。App-Engineでそれを行うことは可能ですか?

(バッチ更新のようなもの)

4

2 に答える 2

2

GAE はアプリのリクエストを 30 秒に制限しており、長いタスクを実行することはできません。

最善の方法は、この CSV を小さなチャンクに分割し、それらを 1 つずつ個別に処理することです。1つの大きなファイルとしてアップロードできる場合は、バイナリ データとして保存し、タスク キューを使用して処理 (分割および解析) できます (これも 1 要求あたり 10 分に制限されていますが、いつでも作成できます)。一連のタスク)。または、バックエンドを使用して処理することもできます。

于 2010-05-18T07:42:50.620 に答える
0

CSV ファイルをブロブストア ( gzipで圧縮されているかどうかに関係なく) に保存し、MapReduce ジョブを使用してデータストアの各行を読み取り、永続化することができます。

于 2013-02-20T04:56:04.267 に答える