python - 一次性将大量数据导入 Google App Engine 数据存储

标签 python google-app-engine google-cloud-datastore

我有一个很大的 CSV 文件,大小大约为 10 MB,其中包含需要导入到 Google App Engine DataStore 中的所有数据。 我尝试了以下方法来执行导入,但总是半途而废。

  • 使用将命令映射到 url 然后执行 url 进行导入,由于请求超时而失败...
  • 使用创建 cron 作业导入,但出现 DeadlineExceededError...
  • 使用 remort_api_shell 导入,但操作超时。

你能否建议我和方法(使用你可以想象的虚拟数据)如何去做...建议代码会更有帮助..

** 我正在使用 Python 和谷歌的网络应用程序框架来开发上述应用程序。

最佳答案

您可以逐行发布。使用内置的批量加载器。

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]

关于python - 一次性将大量数据导入 Google App Engine 数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218220/

相关文章:

Python Numpy 数组修改

google-app-engine - 我可以从 Java 中的谷歌应用引擎部署中排除源文件吗

google-app-engine - OpenId Connect 端点返回 'not found'

java - Google App Engine - update_indexes 错误

python - 尝试使用 urwid 创建控制台屏幕时出现“断言错误”

python - 使用 Python 在 Excel 工作表中查找带下划线的单词

Python 函数返回函数构造的属性

jquery - 如何读取 RSS feed 到 gae 数据库

google-app-engine - GAE Go 测试 - 数据存储查询在测试环境中是否有效?

python - 从数据存储实体获取键名