You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将BigQuery表拆分导出为多个10000行的CSV文件?

将BigQuery表拆分为固定行数的CSV文件

方法一:通过临时表拆分(按你的计划实现)

要把主表拆成多个10000行的临时表,核心思路是给主表每行分配行号,然后按行号范围批量抽取数据创建临时表,再逐一导出。可以用BigQuery脚本实现自动化循环:

DECLARE total_rows INT64;
DECLARE batch_size INT64 DEFAULT 10000;
DECLARE num_batches INT64;
DECLARE current_batch INT64 DEFAULT 0;

-- 获取主表总行数,计算需要拆分的批次
SET total_rows = (SELECT COUNT(*) FROM `你的项目ID.你的数据集ID.主表名`);
SET num_batches = CEIL(total_rows / batch_size);

-- 循环创建临时表并导出
WHILE current_batch < num_batches DO
  -- 创建对应批次的临时表
  EXECUTE IMMEDIATE FORMAT("""
    CREATE TEMP TABLE my_temp_table%03d AS
    SELECT field_a, field_b
    FROM (
      SELECT 
        field_a, 
        field_b,
        ROW_NUMBER() OVER() AS row_num -- 给每行分配行号
      FROM `你的项目ID.你的数据集ID.主表名`
    )
    WHERE row_num BETWEEN %d AND %d
  """, current_batch, current_batch * batch_size + 1, (current_batch + 1) * batch_size);
  
  -- 导出当前临时表到GCS
  EXECUTE IMMEDIATE FORMAT("""
    EXPORT DATA
      OPTIONS (
        uri = 'gs://temp-file-in-gcs/test-export-%03d.csv',
        format = 'CSV',
        overwrite = true,
        header = true,
        field_delimiter = ','
      )
    AS SELECT field_a, field_b FROM my_temp_table%03d;
  """, current_batch, current_batch);
  
  SET current_batch = current_batch + 1;
END WHILE;

注意事项

  • 替换你的项目ID.你的数据集ID.主表名为实际的主表路径
  • %03d会生成000、001这类格式的后缀,让文件名和临时表名按顺序排列,方便管理
  • 如果需要固定的行顺序,在ROW_NUMBER() OVER()中添加ORDER BY子句,比如OVER(ORDER BY field_a)

方法二:直接导出拆分(更高效,无需临时表)

BigQuery的EXPORT DATA本身支持rows_per_file参数,能直接指定每个输出文件的最大行数,省去创建临时表的步骤:

EXPORT DATA
  OPTIONS (
    uri = 'gs://temp-file-in-gcs/test-export-*.csv',
    format = 'CSV',
    overwrite = true,
    header = true,
    field_delimiter = ',',
    rows_per_file = 10000 -- 每个CSV文件最多10000行
  )
AS SELECT field_a, field_b FROM `你的项目ID.你的数据集ID.主表名`;

这个方法更简洁高效,建议优先使用。

内容的提问来源于stack exchange,提问作者Ismail H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:05:20