使用Google AppEngine BulkLoader YAML导入GeoPt数据

时间:2010-07-28 05:40:53

标签: google-cloud-datastore

我从一个带有GeoPt列的csv文件上传数据。我有这样的引号的GeoPt列数据:SomeData,“54.321,-123.456”,MoreData

我的bulkloader.yaml文件有一个这样的条目:      - 财产:位置       external_name:LOCATION       #Type:GeoPt Stats:此类型的1个属性。

当我进行上传并转到DataStore查看器时,我看到该位置已作为字符串而不是GeoPt上传。我不确定导入它的正确方法是什么。也许它需要import_transform?

2 个答案:

答案 0 :(得分:4)

创建一个uploadutil.py文件并在其中添加此方法:

def geo_converter(geo_str):
    if geo_str:
        lat, lng = geo_str.split(',')
        return db.GeoPt(lat=float(lat), lon=float(lng))
    return None

然后在bulkloader.yaml

中添加此内容

为uploadutil添加导入:

- import: uploadutil

添加属性:

- property: location
      external_name: LOCATION
      import_transform: uploadutil.geo_converter

答案 1 :(得分:3)

如果您在上传数据时获得NameError global name 'db' is not defined,请添加行

 from google.appengine.ext import db

归档uploadutil.py