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

是的,'類別'應該被種類的名稱取代。它完美的工作!謝謝!! –