2016-11-27 51 views
0

我有一个相对较大的SQLite表(500万行,2GB),我试图将其移至Google BigQuery。我在db中用于其他表格的简单解决方案是使用类似SQLite Manager(Firefox扩展)来导出到CSV,但是这种方式失败了,我想象的是尝试尝试时出现内存不足错误导出有问题的表格。我试图想出最好的方法来处理这个问题,并且想出了以下几点:将非常大的sqlite表导入BigQuery

  1. 写一些手动编写单个巨大的CSV文件。这似乎是一个坏主意,原因很多,但最重要的是,其中一个领域是文本数据,它将不可避免地与BQ的导入工具支持的任何分隔符混淆,而且我不确定BQ甚至可以支持单个CSV大
  2. 编写一个脚本来手动将所有内容导出到一系列的CSV文件,比如每个〜100k行 - 主要的问题是这将需要导入50个文件
  3. 将所有内容写入系列的JSON,并试图找出一种方法来处理它,从那里相同,如上
  4. 尝试将其导入到MySQL,然后做一个mysqldump,显然可以通过BQ读取
  5. 使用Avro,这似乎是一样#2除了它将是二进制的,所以当它不可避免地失败时它将更难调试

我也有一些在本地ElasticSearch节点上的这些数据,但我找不到任何方式将其迁移到BQ。有没有人有什么建议?我在网上找到的大多数东西都试图让事情脱离BQ,而不是把东西放进去。

+0

编写一段脚本,执行5行100行的示例,尝试使用bigquery,CSV,JSON,(推荐)Avro,如您所愿。 2GB不大,BigQuery的未压缩限制是5TB。 – Pentium10

回答

1

(2)不是问题。 BQ每个导入作业最多可导入10k个文件。

另外,只要输入可以分片(基于文本的格式不压缩,CSV文件不用引用新行),BQ也可以导入非常大的CSV/JSON/AVRO文件。

有关更多信息,请参见https://cloud.google.com/bigquery/quota-policy#import