问题标签 [bulkloader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-app-engine - App Engine bulkuploader yaml 中的 post_import_function
我在使用 bulkloader.yaml 上传数据时尝试使用 post_import_function。根据此链接,在 App Engine bulkuploader yaml 中使用 post_import_function,我使用类型 google.appengine.api.datastore.Entity 进行实体操作。如链接中所示,这是“dict”的子类。但是我不确定如何将方法应用于该实体。
我的代码看起来像(我正在使用 Geomodel):
instance.update_location()
,是我遇到问题的地方。我不知道如何写这个声明。
java - 使用 Java Google App Engine bulkloader 将整个数据存储下载到一个 csv 文件
我目前正在使用--kind
参数来指定要下载的类型以及--filename
要生成的 csv 文件的名称。和用于加快下载速度--rps_limit
。--bandwidth_limit
--batch_size
例如,要下载我正在使用的游戏类型:
那么是否有一个 appcfg.py 命令来下载整个数据存储而不是特定于一个 csv 文件?
谢谢!
java - 使用 java google app engine bulkloader.yaml 在 __key__ 上使用 export_transform 上传数据,将 ID/NAME 列从 id (long) 更改为 name (string)
我认为我的问题类似于:BulkLoader -export_transform或https://stackoverflow.com/questions/3220911/gae-datastore-export-transform
基本上,我使用bulkloader 来备份和恢复我创建的实体。为了测试,我使用了“游戏”类型并将其输出到名为 game.csv 的 csv 文件中。
这是我经历的过程:
使用以下命令将游戏类型下载到 game.csv:
appcfg.py download_data --config_file=bulkloader.yaml --kind=Game --filename=game.csv --application=MyAppId --url= http://MyAppId.appspot.com/remote_api --rps_limit=500 --带宽限制=2500000 --batch_size=100
删除所有游戏实体。然后我检查了我的应用程序的管理门户数据存储查看器选项卡,我发现我的数据存储中没有更多实体。
使用使用创建的 game.csv 上传游戏类型(命令与download_data相同,但使用upload_data):
appcfg.py upload_data --config_file=bulkloader.yaml --kind=Game --filename=game.csv --application=MyAppId --url= http://MyAppId.appspot.com/remote_api --rps_limit=500 --带宽限制=2500000 --batch_size=100
运行一个通过“名称”检索实体的 servlet(这是下面 Game.java 中显示的属性)。
出现以下错误:
我怀疑这与我的bulkloader.yaml文件没有为__key__
属性配置正确有关。所以我把它贴在下面:
在删除和上传数据之前,“游戏”类型(在应用程序管理门户的数据存储查看器选项卡中)显示ID/NAME
带有超链接的列,看起来像ID=12345,ID=67890 ... 对于每个实体行。
上传后,datastre 查看器会显示带有超链接的ID/NAME
列,这些超链接看起来像NAME=12345,NAME=67890 ... 对于每个实体行。
可能的原因?
我实际上已经在https://groups.google.com/forum/?hl=en#!topic/objectify-appengine/FFuB2Onfnzc上发布了我的问题,但我们不知道避免在何时将__key__
属性转换为字符串的语法上传回数据。
Jeff(Objectify3.0 的创建者)说:
错误消息表明数据存储区中的数据为字符串名称键,但您的游戏实体具有数字长 @Id。我真的不知道批量加载程序的语法,但最可疑的行是这一行:
看起来您在这里将所有数字 id 转换为字符串,这将是您的问题。将它们保留为数字。
我试过删除,export_transform: transform.key_id_or_name_as_string
但是当我下载时,csv文件是空的。
也许一个解决方案是避免使用--config_file
参数和bulkloader.yaml文件,只让 bulkloader 下载/上传数据而不进行任何转换?
额外信息,以防可能相关
我正在使用 objectify3.0.jar 来操作我的 GAE 数据存储。所以我的游戏类型看起来像这样:
python - 如何使用 Bulkloader 工具将当前日期/时间上传到 App Engine?
如何将上次修改时间属性添加到在批量上传期间更新的实体类型?
我目前正在使用 appcfg upload_data 将 csv 上传到我的高复制数据存储。我计划将此作为一项 cron 作业,以从我们的内部数据库到数据存储进行单向同步。为了考虑过时的记录,我想让它更新最后修改时间属性,然后执行 map reduce 以删除旧记录(超过一周)。记录将使用密钥属性进行更新。
考虑到我想保留在需要时使用 Datastore Admin 删除整个实体类型的能力,创建上次修改时间的最佳方法是什么?
- 创建一个对象模型来“初始化”具有所有必要字段的数据存储实体?
- 将属性添加到我的 bulkuploader.yaml 以获取修改时间并使用导入转换来获取日期?
- 其他...
提前致谢!
python - 如何通过 Google App Engine bulkloader 上传带有 key_name 的数据
我可以上传数据,但 key_name 为空。如何使用CSV中的“id”作为数据存储区的 key_name?
我喜欢使用 'id' 作为 key_name,因为其他数据使用 'id' 作为外键。我是 Google App Engine 的新手。
这是 CSV 数据。
这是YAML
PS:我正在尝试将数据上传到本地环境。
更新
感谢您的帮助,我尝试了代码,但它不能正常工作。结果很奇怪。
在终端窗口中,一条日志消息告诉我上传已成功完成,但是我在 Google App Engine 控制台 (http://localhost:8080/_ah/admin/datastore) 中找不到任何记录。数据存储为空,没有记录。
终端窗口中的日志消息是这样的
输入命令
结果消息
我也试过这个,但结果是一样的。终端显示成功,但在 Google App Engine 控制台中没有记录......
PS:我正在使用 Mac OS X Snow Leopard 和 Google App Engine 启动器。
java - Java Google App Engine 批量加载程序上传错误“溢出错误:日期值超出范围”
我正在使用批量加载程序从一台 GAE 服务器下载我的评论类型并上传到另一台 GAE 服务器。此评论类型包含大约 30,000 个实体。
我使用命令上传:
注意:整个错误很长。所以我把它包括在这个问题的底部。
上传根本没有开始并停止在该行:[INFO ] Opening database: bulkloader-progress-20110611.222101.sql3
我在整个跟踪的底部看到:lambda val: _EPOCH + datetime.timedelta(microseconds=val), OverflowError: date value out of range
我怀疑这是由于在我的发布日期列中发现的日期格式错误造成的(请参阅下面的整个评论类型)。
我已经尝试解决的问题
我在 GAE 管理门户中运行了 GQL:,SELECT * FROM Review where publisheddate = null
发现大约 15 个实体的已发布日期列具有空值。所以我删除了那些,重新下载并尝试重新上传评论类型。我仍然得到同样的错误。
我在想,因为我正在使用没有配置文件参数的上传命令,例如--config_file=bulkloader.yaml
(参见上面的上传,我没有指定--config_file
)
我依靠数据存储统计信息来确定下载到我的review.csv文件的内容。
现在,由于我刚刚删除了已发布日期为空的实体,因此重新下载然后立即重新上传与我最初的下载和上传没有任何不同。由于尚未更新数据存储统计信息。
我的问题
由于有 30, 000 个实体,我不确定如何找到日期格式错误的实体。是否可以快速定位具有错误发布日期值的实体?
有谁知道如何解决这个问题?从错误跟踪中我不确定真正的问题是什么。
点评种类
我正在使用 objectify3.0.jar 来操作我的 GAE 数据存储。所以我的评论类型看起来像这样:
整个错误
formatting - 批量加载程序语法错误
一直在努力尝试将数据批量加载到数据存储中,我已经到了需要专家帮助的地步。
我不认为正在做的事情很棘手,我有以下配置文件:
当我使用 appcfg.py 命令时,错误消息以:
我使用了一个 .txt 文件,因为最初在记事本中编辑会更快 - 我不知道这是否是一个问题,并且 apppot 的 remote_api 似乎都还可以。
我认为这是一个相当基本的问题,因为它已经停止在顶线工作。我删除了原始文件顶部的注释行 - 可能是它造成的。
我试图找到工作示例来设置我的正确性,但它们似乎都遵循上面的语法,或者它们略有不同,我尝试了两种变体。
非常感谢为我的第一个云应用程序批量加载提供帮助。提前感谢任何花时间阅读我的帖子的人,无论他们是否解决了问题。
sql - Interop.SQLXMLBULKLOADLib.dll 的问题
我将一个旧的 dts 包转换为 SSIS 包并尝试在 Windows 2008 服务器上运行它。这个 SSIS 包运行一个 Win32 exe 文件,它使用Interop.SQLXMLBULKLOADLib.dll并试图将一些 XML 数据加载到数据库中。但是当这个exe被执行时我得到了以下错误。
COM 异常:检索具有 CLSID {8270CB2F-B0E6-4C37-8A40-D70778F47894} 的组件的 COM 类工厂失败,原因是以下错误:80040154。
我正在尝试在 Windows 2000 兼容模式下运行 .exe 文件。如果您有任何建议,请告诉我。
谢谢
python - 在批量上传器中正确编码文本
为批量上传程序编码字符串的正确方法是什么。当它在我的文本字段中遇到撇号时,它目前正在退出。
这是一个示例 CSV 文件:
这是我的 bulkloader.yaml:
当我使用这样的示例(文本中有撇号)运行加载程序时,我将收到以下错误...
UnicodeEncodeError:'ascii' 编解码器无法在位置 x 编码字符 u'\u2019':序数不在范围内(128)
任何帮助表示赞赏。
google-app-engine - 批量上传 2 GB 数据库所需的 CPU 时间?
我聘请了一名程序员将我的网站(最初使用 Django 和 MySQL 实现)移植到 Google App Engine。原始 Web 应用程序的数据库大小约为 2 GB,最大的表有 500 万行。据我了解,为了移植这些内容,程序员将数据库序列化为 JSON,然后将其上传到 Google 应用引擎。
到目前为止,按照 GAE 的收费,他的上传使用了 100 小时的 CPU 时间,但看起来只有大约 50 或 100 MB 已加载到数据库中。对于如此少量的数据,这是合理的 CPU 时间吗?MySQL 可以在几分钟内加载这么多数据,所以我不明白为什么 GAE 会慢 1000 倍。他是在做一些低效的事情吗?