1

我正在使用GAE的高复制数据存储。我以前使用该下载的表格以CSV:将CSV上载到GAE数据存储

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导致的吗?如果是这样,那我该如何解决它?

回答

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相关联,否则它将是一个简单的字符串。现在在你的情况是不同的,因为你使用密钥来替换数据,我没有这方面的经验。

+0

它应该是'import_transform:transform.create_foreign_key('key',key_is_id = True)'或者我应该将'key'更改为Kind的名称?因为在自动生成的是这样的:import_transform:transform.create_foreign_key('Topic')。所以看起来我应该把这个名字放在'钥匙' 的地方,但奇怪的是这两个工作,我担心可能有一些我错过了,可能会导致问题后来 –

+0

' - 属性: category/import_transform:transform.create_foreign_key('Category',key_is_id = True)' '大写的'Category'是属性'category'引用的Model。在csv文件中,我有一个类似'123456'的字符串,而在数据存储中,类别类别的ID是'123456'。 通过这种方式,GAE将reference属性关联到相对Kind,否则它将是一个简单的字符串。 现在在你的情况是不同的,因为你使用密钥替换数据,我没有这方面的经验。 –

+0

是的,'类别'应该被种类的名称取代。它完美的工作!谢谢!! –