我正在使用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
导致问题吗?如果是的话,我该如何解决?
答案 0 :(得分:2)
我不确定,但也许这可以帮到你。我仅将此用于 link 一个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'的字符串,在数据存储区中,Category Kind的ID是'123456'。通过这种方式,GAE将referenceproperty与相关Kind相关联,否则它将是一个简单的字符串。现在在你的情况下是不同的,因为你使用Key替换数据,我没有这方面的经验。