Google app engine 如何将数据从在线GAE数据存储加载到本地开发服务器?

Google app engine 如何将数据从在线GAE数据存储加载到本地开发服务器?,google-app-engine,google-cloud-datastore,app-engine-ndb,database-backups,bulkloader,Google App Engine,Google Cloud Datastore,App Engine Ndb,Database Backups,Bulkloader,我以前曾使用中描述的方法在实时数据存储上下载实体的备份 目前,我通过编写bulkloader.yaml并使用以下命令获得每个实体类型的csv文件: appcfg.py download_data --config_file=bulkloader.yaml --filename=users.csv --kind=Permission --url=http://your_app_id.appspot.com/_ah/remote_api appcfg.py download_data --kind

我以前曾使用中描述的方法在实时数据存储上下载实体的备份

目前,我通过编写
bulkloader.yaml
并使用以下命令获得每个实体类型的csv文件:

appcfg.py download_data --config_file=bulkloader.yaml --filename=users.csv --kind=Permission --url=http://your_app_id.appspot.com/_ah/remote_api
appcfg.py download_data --kind=<kind> --url=http://your_app_id.appspot.com/_ah/remote_api --filename=<data-filename>
我还有一个sql3转储文件,是使用以下命令获得的:

appcfg.py download_data --config_file=bulkloader.yaml --filename=users.csv --kind=Permission --url=http://your_app_id.appspot.com/_ah/remote_api
appcfg.py download_data --kind=<kind> --url=http://your_app_id.appspot.com/_ah/remote_api --filename=<data-filename>
我编写了一个加载程序,并进行了测试,它还要求输入用户名和密码,但它在这里接受任何东西。结果如下:

/usr/local/google_appengine/google/appengine/api/search/search.py:232: UserWarning: DocumentOperationResult._code is deprecated. Use OperationResult._code instead.
  'Use OperationResult.%s instead.' % (name, name))
/usr/local/google_appengine/google/appengine/api/search/search.py:232: UserWarning: DocumentOperationResult._CODES is deprecated. Use OperationResult._CODES instead.
  'Use OperationResult.%s instead.' % (name, name))
Application: knowledgetestgame
Uploading data records.
[INFO    ] Logging to bulkloader-log-20121113.210613
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
[INFO    ] Opening database: bulkloader-progress-20121113.210613.sql3
Please enter login credentials for localhost
Email: test@example.com
Password for test@example.com: 
[INFO    ] Connecting to localhost:8080/_ah/remote_api
[INFO    ] Starting import; maximum 10 entities per post
[ERROR   ] [WorkerThread-4] WorkerThread:
Traceback (most recent call last):
  File "/usr/local/google_appengine/google/appengine/tools/adaptive_thread_pool.py", line 176, in WorkOnItems
    status, instruction = item.PerformWork(self.__thread_pool)
  File "/usr/local/google_appengine/google/appengine/tools/bulkloader.py", line 764, in PerformWork
    transfer_time = self._TransferItem(thread_pool)
  File "/usr/local/google_appengine/google/appengine/tools/bulkloader.py", line 933, in _TransferItem
    self.content = self.request_manager.EncodeContent(self.rows)
  File "/usr/local/google_appengine/google/appengine/tools/bulkloader.py", line 1394, in EncodeContent
    entity = loader.create_entity(values, key_name=key, parent=parent)
  File "/usr/local/google_appengine/google/appengine/tools/bulkloader.py", line 2728, in create_entity
    (len(self.__properties), len(values)))
AssertionError: Expected 17 columns, found 18.
[INFO    ] [WorkerThread-5] Backing off due to errors: 1.0 seconds
[INFO    ] Unexpected thread death: WorkerThread-4
[INFO    ] An error occurred. Shutting down...
[ERROR   ] Error in WorkerThread-4: Expected 17 columns, found 18.

[INFO    ] 980 entities total, 0 previously transferred
[INFO    ] 0 entities (278 bytes) transferred in 5.9 seconds
[INFO    ] Some entities not successfully transferred
我总共有4000个实体,这里说有980个被传输,但实际上我检查了本地数据存储,没有发现任何一个

下面是我使用的加载程序(我对Guess实体使用了
NDB


编辑:我刚刚注意到错误消息中的这一部分,WorkerThread-0中的[error]error:预期17列,找到18列。而实际上我只是浏览了整个csv文件,并确保每行有18列。我检查了加载程序,发现缺少
列,我给了它一个类型
int
,但这不起作用

试着只需按
Enter
(无用户名/密码)。这似乎对我起了作用。我的命令(包装在bash脚本中以防止偶尔收到的导入错误)是:

#/bin/bash
#修改路径
导出PYTHONPATH=$PYTHONPATH:。
#加载数据
python/path/to/app/config/appcfg.py上传_数据\
--配置文件=\
--文件名=\
--种类=\
--application=dev~\
--网址=http://localhost:8088/_ah/remote_api ./

当提示输入
电子邮件时
,我点击回车键,所有内容都上传到dev服务器。在这种情况下,我没有使用
NDB
,尽管我不认为这会有什么不同。

如果您的身份验证有问题,请在appengine\u config.py中输入以下内容:

if os.environ.get('SERVER_SOFTWARE','').startswith('Development'):
    remoteapi_CUSTOM_ENVIRONMENT_AUTHENTICATION = (
    'REMOTE_ADDR', ['127.0.0.1'])
然后跑

appcfg.py download_data --url=http://APPNAME.appspot.com/_ah/remote_api --filename=dump --kind=EntityName
appcfg.py upload_data --url=http://localhost:8080/_ah/remote_api --filename=dump --application=dev~APPNAME

@MohamedKhamis您的CSV中有多少列?该错误的形式为
Expected列,found
appcfg.py download_data --url=http://APPNAME.appspot.com/_ah/remote_api --filename=dump --kind=EntityName
appcfg.py upload_data --url=http://localhost:8080/_ah/remote_api --filename=dump --application=dev~APPNAME