(Google App Engine)Bulkloader上传会生成新条目,而不是更新现有条目

时间:2011-04-19 07:41:30

标签: google-app-engine bulkloader

对于我的项目我使用GAE数据存储来存储数据。用于备份 目的我决定使用bulkloader - 下载整个 数据在csv文件中完美无缺。上传也会上传数据 没有错误。

我的问题是,上传不会更新现有数据 创建重复。这是数据存储区查看器中的一个示例:

更新前:

ID/Name 
id=18000
id=20001 

更新后:

ID/Name
id=18000
id=20001
name=18000
name=20001 

在数据存储区实体中,我将其用作数据ID:

@PrimaryKey 
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
private Long id; 

任何想法如何使用bulkloader实际更新现有数据?

谢谢,亚当

2 个答案:

答案 0 :(得分:3)

bulkloader的默认设置有一种讨厌价值类型的恶习。这对于键和列表尤其有问题。

我使用这些辅助函数bulk_helper,并将其添加到我的bulkloader.yaml:

python_preamble:
- import: bulk_helper
...

property_map:
  - property: __key__
    external_name: key
    import_transform: bulk_helper.reverse_str_to_key
    export_transform: bulk_helper.key_to_reverse_str

这会保留完整的密钥,包括种类和父信息,并保持其可读性(如果这对您很重要)。

答案 1 :(得分:2)

这对我很有用:

import_transform:transform.create_foreign_key('Kind',key_is_id = True)

Google app engine bulkloader problem when using yaml autogenerated configuration and enities with numeric ID

找到它

感谢。