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)

大写的“类别”是从属性“类别”引用的模型。在 csv 文件中,我有一个类似“123456”的字符串,而在数据存储中,类别种类的 ID 是“123456”。通过这种方式,GAE 将引用属性与相对 Kind 相关联,否则它将是一个简单的字符串。现在在您的情况下有所不同,因为您使用 Key 来替换数据,而我没有这方面的经验。

于 2012-06-24T04:34:54.647 回答