如何在大查询表中从行索引100万到200万获取记录?

时间:2014-06-06 01:38:57

标签: google-bigquery mlab

我最近一直试图从大查询中下载m-lab数据集。似乎有一个限制,我们只能通过一个查询查询并获得大约100万行。 m-lab数据集在许多表中包含数十亿条记录。我喜欢使用像bq query --destination_table=mydataset.table1 "select * from (select ROW_NUMBER() OVER() row_number, * from (select * from [measurement-lab:m_lab.2013_03] limit 10000000)) where row_number between 2000001 and 3000000;"这样的查询,但它没有用。是否有解决方法使其工作?非常感谢!

1 个答案:

答案 0 :(得分:3)

如果您尝试下载大型表格(如m-lab表格),最佳选择是使用提取作业。例如,运行

bq extract 'mlab-project:datasset.table' 'gs://bucket/foo*'

将表格提取到谷歌云存储对象gs://bucket/foo000000000.csv,gs://bucket/foo0000000001.csv等。默认提取为CSV,但你可以传递`--destination_format = NEWLINE_DELIMITED_JSON将表提取为json。

另外要提到的是,您可以使用tabledata list api读取bigquery中的第100万行,以从该特定偏移量读取(无需查询!)。

bq head -n 1000 -s 1000000 'm-lab-project:dataset.table'

将从第1000000行开始读取1000行。