如何在导出应用引擎数据时排除列

时间:2011-04-12 07:45:30

标签: python django google-app-engine csv

我打算在我的django应用程序上进行一些数据挖掘,该应用程序使用appengine来存储数据,但是,我的一个表将图像存储在其中的两列中,因此,它的大小为千兆字节,所以它很远每次我想分析新数据时下载速度太慢。对于数据挖掘,我只关心该表中的计划文本列,如何在将数据导出到csv文件时排除这些列?

我知道有一个针对buildup.yaml的csv连接器的“column_list”,您可以指定在导出数据时仅包含某些列,但看起来它仍会在过滤掉之前下载整个表行将appengine的中间sqlite3数据文件转换为csv时的列。

作为参考,我使用此处描述的方法来下载我的数据http://code.google.com/appengine/docs/python/tools/uploadingdata.html,但我对其他解决方案持开放态度,最好是我可以每隔几天自动执行此数据导出的解决方案。

3 个答案:

答案 0 :(得分:2)

你做不到。 AppEngine数据存储区API和底层GQL仅执行两种SELECT查询:仅__key__和所有字段。没有办法得到一个字段的子集。

答案 1 :(得分:0)

正如您所观察到的,批量加载程序使用remote_api下载整个记录,然后仅将您关注的字段输出到CSV。如果您只想下载所选字段,则必须编写自己的代码才能在服务器端执行此操作 - 可能是通过在mapreduce中使用新的Files API来编写可以随后下载的文件。

答案 2 :(得分:0)

有点迟到,但我在类似情况下所做的就是从自动生成的bulkloader.yaml文件中删除不需要的属性。

以下是使用Google documentation从csv文件中排除“account”属性的示例。我将它用于像blob这样的东西,它也能正常工作:

property_map:
- property: __key__
  external_name: key
  export_transform: transform.key_id_or_name_as_string
START DELETE
- property: account
  external_name: account
  # Type: Key Stats: 119 properties of this type in this kind.
  import_transform: transform.create_foreign_key('TODO: fill in Kind name')
  export_transform: transform.key_id_or_name_as_string
END DELETE
- property: invite_nonce
  external_name: invite_nonce
  # Type: String Stats: 19 properties of this type in this kind.