2011-06-08 58 views
3

我可以上傳數據,但key_name爲空。 如何使用CSV中的'id'作爲數據存儲上的key_name?如何使用Google App上載的key_name上傳數據bulkloader

我喜歡使用'id'作爲key_name,因爲其他數據使用'id'作爲外鍵。 我是Google App Engine的新手。

這是CSV數據。

"id","name" 
"1","USA" 
"2","France" 
"3","Italy" 

這是YAML

- model: model.testcountry.TestCountry 
    connector: csv 
    connector_options: 
    encoding: utf-8 
    columns: from_header 
    property_map: 
    - property: __key__ 
     external_name: id 
    - property: name 
     external_name: name 

P.S:我想上傳數據到本地環境。


更新

謝謝你的幫助,我嘗試了代碼,但它不能很好地工作。 結果很奇怪。

在終端窗口中,日誌消息告訴我上傳成功完成,但我在Google App Engine控制檯(http:// localhost:8080/_ah/admin/datastore)中找不到任何記錄。數據存儲區是空的,沒有記錄。

在終端窗口日誌信息是此

輸入命令

appcfg.py upload_data --config_file=bulkloader.yaml --filename=testcountries.csv --kind=TestCountry --url=http://localhost:8080/remote_api --num_thread=1 

結果消息

Uploading data records. 
[INFO ] Logging to bulkloader/log.log 
[INFO ] Throttling transfers: 
[INFO ] Bandwidth: 250000 bytes/second 
[INFO ] HTTP connections: 8/second 
[INFO ] Entities inserted/fetched/modified: 20/second 
[INFO ] Batch Size: 10 
Please enter login credentials for localhost:8080 
Email: xxxxxxx 
Password for l: 
[INFO ] Opening database: bulkloader-progress-20110609.003032.sql3 
[INFO ] Connecting to localhost:8080/remote_api 
[INFO ] Starting import; maximum 10 entities per post 
.......... 
[INFO ] 100 entities total, 0 previously transferred 
[INFO ] 100 entities (3362 bytes) transferred in 1.9 seconds 
[INFO ] All entities successfully transferred 

我也試過這一點,但結果是相同的。終端說成功,但在谷歌應用程序引擎控制檯沒有記錄....

import_transform: int 

PS:我使用的是Mac OS     X雪  Leopard和谷歌應用程序引擎啓動。

回答

1

試試這個:

- import: google.appengine.ext.bulkload.transform 
- model: model.testcountry.TestCountry 
    connector: csv 
    connector_options: 
    encoding: utf-8 
    columns: from_header 
    property_map: 
    - property: __key__ 
     external_name: id 
     import_transform: transform.create_foreign_key('TestCountry') 
    - property: name 
     external_name: name 
相關問題