質問

.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のレコードがある場合があります。アプリエンジンでそれを行うことは可能ですか?

(バッチアップデートのようなもの)

役に立ちましたか?

解決

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

最良のアプローチは、このCSVを小さなチャンクに分割し、1つ後に個別に処理することです。 1つの大きなファイルとしてのみアップロードできる場合、バイナリデータとして保存してから、プロセス(分割および解析)を使用できます。 タスクキュー (リクエストごとに10分にも制限されていますが、いつでもタスクのチェーンを作成できます)。または、ユーザーバックエンドで処理することもできます。

他のヒント

CSVファイルをBlobstoreに保存できます(gzipt また いいえ)そして、aを使用します MapReduceジョブ データストアの各行を読み、持続させます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top