我有一个大的CSV文件,大小约为10 MB,其中包含需要在Google App Engine DataStore中导入的所有数据。 我尝试了以下方法来执行导入,但所有时间都失败了一半。
你能建议我和approch(使用你能想象的虚拟数据)怎么做...用代码建议会更有帮助..
**我正在使用Python和谷歌的网络应用程序框架开发上述应用程序。
答案 0 :(得分:4)
你可以逐行发布。使用内置的批量加载器。
http://code.google.com/appengine/docs/python/tools/uploadingdata.html
这是好文章。这是我2年前用过的contactloader.py供参考。自从上次使用以来它更复杂但仍然.......
import datetime
from google.appengine.ext import db
from google.appengine.tools import bulkloader
class Contact(db.Model):
date = db.DateTimeProperty(auto_now_add=True)
owner = db.StringProperty()
companyname = db.StringProperty()
companyemail = db.EmailProperty()
def myfunc(x):
temp = x.split(":mailto:")
if len(temp) > 0:
temp = temp[-1].split(":")
else:
return "defaultvalue"
if len(temp) > 0:
temp = temp[0]
else:
return "defaultvalue"
temp = temp.split("<1>")[0]
if temp is None or len(temp) < 5:
return "defaultvalue"
return temp
def mysecfunc(x):
return x.split("<0>")[0]
class ContactLoader(bulkloader.Loader):
def __init__(self):
bulkloader.Loader.__init__(self, 'Contact',
[
('companyname',mysecfunc),
('owner', lambda x:"somevalue"),
('companyemail',myfunc),
("date",lambda x:datetime.datetime.now()),
])
loaders = [ContactLoader]