データストアにアップロードする必要がある約 4000 のレコードがあります。
現在、CSV 形式になっています。誰かが私を指摘したり、GAEにデータを一括アップロードする方法を説明したりしていただければ幸いです。
データストアにアップロードする必要がある約 4000 のレコードがあります。
現在、CSV 形式になっています。誰かが私を指摘したり、GAEにデータを一括アップロードする方法を説明したりしていただければ幸いです。
bulkloader.pyツールを使用できます。
Python SDK に含まれている bulkloader.py ツールを使用すると、アプリケーションのデータストアにデータをアップロードできます。少し設定するだけで、CSV ファイルから新しいデータストア エンティティを作成できます。
完璧な解決策はありませんが、 App Engine Consoleを試してみることをお勧めします。App Engine コンソールは、本番環境でインタラクティブな Python インタープリターを実行できる無料のプラグインです。いくつかの理由から、1 回限りのデータ操作 (初期データのインポートなど) に役立ちます。
次のようなことをお勧めします。
csv
モジュールを使用して、有用なデータ構造のリスト (おそらくリストのリストまたはそのようなもの) が得られるまで、データを切り刻みます。for
リスト内の各データ構造を反復するループ
を作成します。#5 までの 1 回の反復の後、コピーして貼り付けるか、単純な関数を記述してインポート タスクを高速化できることがわかります。また、ステップ 5.1 と 5.2 でデータを取得して処理することで、データが完璧であることを確認するまで時間をかけてもかまいません。
(注: 現在、App Engine コンソールは Firefox で最適に動作します。 )
複数のエンティティでリモート API と操作を使用する。Python を使用した NDB の例を示します。Test.csv には、セミコロンで区切られた次の値が含まれています。
1;2;3;4
5;6;7;8
まず、モジュールをインポートする必要があります:
import csv
from TestData import TestData
from google.appengine.ext import ndb
from google.appengine.ext.remote_api import remote_api_stub
次に、リモート API スタブを作成する必要があります。
remote_api_stub.ConfigureRemoteApi(None, '/_ah/remote_api', auth_func, 'your-app-id.appspot.com')
リモート API の使用の詳細については、この回答をご覧ください。
次に、基本的に次のことを行うメイン コードが続きます。
メインコード:
# Open csv file for reading.
with open('Test.csv', 'rb') as file:
# Set delimiter.
reader = csv.reader(file, delimiter=';')
# Reduce 2D list into 1D list and then map every element into entity.
test_data_list = map(lambda number: TestData(number=int(number)),
reduce(lambda list, row: list+row, reader)
)
# Or you can use list comprehension.
test_data_list = [TestData(number=int(number)) for row in reader for number in row]
# Batch put whole list into HRD.
ndb.put_multi(test_data_list)
put_multi 操作は、単一の HTTP POST 要求で適切な数のエンティティを確実にバッチ処理することにも注意を払います。
詳細については、このドキュメントをご覧ください。
App Engine SDK の新しいバージョンは、appcfg.py を使用してアップロードできます。
appcfg.pyを参照してください