1

GAE の高レプリケーション データストアを使用しています。以前、これを使用して csv でテーブルをダウンロードしました。

appcfg.py download_data --application=<your_app_id> --kind=<kind> --url=http://your_app_id.appspot.com/[remote_api_path] --filename=<data-filename>

ここで、その CSV ファイルにいくつかの変更を加えました。それをアップロードして、オンライン データを置き換えたいと考えています。だから私はこれを使用しました:

appcfg.py upload_data --config_file=bulkloader.yaml --filename=<data-filename> --kind=<kind> --url=http://your_app_id.appspot.com/[remote_api_path]

これでデータが正常にアップロードされましたが、問題は、新しくアップロードされたすべてのキー (参照を含む) が次のようになっていることname=99764です。id=99764

GAE は両方が同じものであることを認識していなかったので、既存のものを置き換えず、新しいものを追加しました。しかし、今では参照が壊れています。

bulkloader.yaml、私はこれを持っています:

- kind: Kind
  connector: csv
  connector_options:
    # TODO: Add connector options here--these are specific to each connector.
  property_map:
    - property: __key__
      external_name: key
      export_transform: transform.key_id_or_name_as_string

この部分transform.key_id_or_name_as_stringは問題の原因ですか? もしそうなら、どうすれば修正できますか?

4

1 に答える 1

2

よくわかりませんが、これが役立つかもしれません。これは、データの置換ではなく、ReferencePropertyのリンクにのみ使用しました

- property: __key__
      external_name: key
      import_transform: transform.create_foreign_key('key', key_is_id=True)
      export_transform: transform.key_id_or_name_as_string

編集:

- property: category
  external_name: category
  import_transform: transform.create_foreign_key('Category', key_is_id=True)

大文字の「Category」は、プロパティ「category」から参照されるモデルです。csv ファイルには「123456」のような文字列があり、データストアではカテゴリの種類の ID は「123456」です。このようにして、GAE は参照プロパティを相対的な Kind に関連付けました。それ以外の場合は単純な文字列になります。データを置き換えるためにキーを使用しているため、あなたの場合は異なりますが、私はこの意味での経験がありません。

于 2012-06-24T04:34:54.647 に答える