将数据从Google App Engine导出到csv

Hei*_*erg 10 python csv google-app-engine

这个旧答案指向Google App Engine文档上的链接,但该链接现在是关于备份您的GAE数据,而不是下载它.

那么如何将所有数据下载到csv中呢?数据很小,即<1 GB

小智 25

我曾尝试使用此处此处概述的步骤将几种不同的方法导出到csv .但我无法上班.所以,这就是我所做的(我最大的表大约是2GB).这种方法相对较快,即使它看起来像很多步骤......比对抗谷歌可能已连续数小时改变的随机代码更好:

  1. 进入云存储并创建2个新桶"data_backup"和"data_export".如果您已有一个存储桶的存储桶,则可以跳过此步骤.
  2. 进入您要转换的数据存储区的"我的控制台"> Google数据存储区>管理员>打开数据存储区管理员.
  3. 选中要备份的实体,然后单击"备份实体".我一次做了一个,因为我只有5个表要导出而不是一次性检查所有5个表.
  4. 指明要存储它们的Google Storage(gs)存储桶
  5. 现在转到谷歌大查询(我以前从未使用过这个,但它是开始的蛋糕)
  6. 单击小向下箭头并选择"创建新数据集"并为其命名.
  7. 然后单击刚刚创建的新数据集旁边的向下箭头,并选择"创建新表".完成导入步骤,选择"选择数据"步骤下的"云数据存储备份".然后选择要导入Big Query的备份,以便在下一步中将其导出到csv.
  8. 一旦表导入(这对我来说很快),单击表名旁边的向下箭头并选择"导出".您可以直接导出到csv,然后可以保存到为导出创建的Google存储桶中,然后从那里下载.

这里有一些提示:

  • 如果您的数据具有嵌套关系,则必须导出为JSON而不是CSV(它们也提供avro格式)
  • 我使用json2csv转换我导出的无法保存为csv的JSON文件.它在大桌子上运行有点慢但完成它.
  • 由于json2csv中的python内存错误,我不得不将2GB文件拆分为2个文件.我使用gsplit来分割文件并检查其他属性>标签和标题>不添加Gsplit标签下的选项...(这确保Gsplit没有向分割文件添加任何数据)

就像我说的那样,这实际上很快,尽管它有很多步骤.希望它可以帮助别人避免花费大量时间来尝试转换奇怪的备份文件格式或运行可能不再起作用的代码.

  • 这很好,谢谢斯科特.我只想补充一点,在步骤7中,您应该为文件提供与您要加载的实体对应的扩展名.backup_info,该文件存储在实体中的存储桶中. (8认同)
  • 这对我很有用!但是在这个过程中有一些问题:**(1)**在步骤7中,位置字段应该是`backup_info`文件(例如`gs:// <bucket>/<folder> /ag5...Qw .<Kind> .backup_info`)**(2)**如果你的表很大(我的是20gb)它不会让你导出到一个文件,你需要指定一个导出uri像:`gs :// <bucket>/<folder>/*`,它将导出到该文件夹​​中的多个文件.**(3)**如果您的架构不完全平坦,它将不允许您导出到`csv`,只导出`json`. (4认同)

Jos*_*h J 3

您可以用来appcfg.py下载Kindcsv 格式的数据。

$ appcfg.py download_data --help

用法:appcfg.py [选项] download_data

从数据存储区下载实体。

“download_data”命令下载数据存储实体并将它们以 CSV 或开发人员定义的格式写入文件。