首页 > 解决方案 > 查找要插入 BigQuery 的列名

问题描述

我正在尝试执行“插入表”,并看到我们需要明确指定列名。有没有办法在不手动输入的情况下获取这些数据?我正在 BigQuery 上执行此操作。

标签: google-bigquery

解决方案


这是一个从表中获取列名(不产生成本)并同时构建INSERT列表的示例:

WITH EmptyReference AS (
  SELECT *
  FROM `bigquery-public-data.samples.shakespeare`
  LIMIT 0
)
SELECT
  CONCAT(
    'INSERT dataset.tablename (',
    ARRAY_TO_STRING(
      REGEXP_EXTRACT_ALL(
        TO_JSON_STRING((SELECT AS STRUCT t.*)),
        r'"([^"]+)":'),
      ', '),
    ')')
FROM (
  SELECT AS VALUE t
  FROM EmptyReference AS t
  UNION ALL SELECT AS VALUE NULL
) AS t

这将返回:

INSERT dataset.tablename (word, word_count, corpus, corpus_date)     

2019 年 6 月更新

对在 INSERT 和 MERGE 语句中省略列名的支持现在处于测试阶段。

省略列名时,目标表中的所有列都根据它们的序号位置升序包含在内

更多细节在这里


推荐阅读