2010-07-28 4 views
2

Je télécharge des données à partir d'un fichier .csv avec une colonne GeoPt. J'ai les données de la colonne GeoPt entre guillemets comme ceci: someData, "54,321, -123,456", MoreDataImportation de données GeoPt à l'aide de Google AppEngine BulkLoader YAML

Mon fichier bulkloader.yaml a une entrée comme ceci: - propriété: location external_name: EMPLACEMENT # Type: GeoPt Stats: 1 propriétés de ce type dans ce type.

Lorsque je fais le téléchargement et que je vais dans la visionneuse DataStore, je vois que l'emplacement a été téléchargé en tant que chaîne au lieu d'un GeoPt. Je ne suis pas sûr de ce que serait la bonne façon d'importer cela. Peut-être qu'il nécessite un import_transform?

Répondre

4

Créer un fichier uploadutil.py et ajoutez cette méthode en elle:

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

Puis ajoutez ceci dans bulkloader.yaml:

Ajouter importation pour uploadutil:

- import: uploadutil 

Et ajouter la propriété:

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

Si vous obtenez NameError global name 'db' is not defined alors le téléchargement des données, ajoutez la ligne

from google.appengine.ext import db 

au fichier uploadutil.py