google-bigquery - 查找要插入 BigQuery 的列名
问题描述
我正在尝试执行“插入表”,并看到我们需要明确指定列名。有没有办法在不手动输入的情况下获取这些数据?我正在 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)
对在 INSERT 和 MERGE 语句中省略列名的支持现在处于测试阶段。
省略列名时,目标表中的所有列都根据它们的序号位置升序包含在内
更多细节在这里
推荐阅读
- python - ValueError:输入张量必须至少具有 5 级(depthwise_conv2d)
- hazelcast - Hazelcast 大容量最佳实践
- mysql - 使用 groupby 和 union all 时有没有办法返回不存在的值?
- sql - 根据多个真实条件查询所有相同的id
- reactjs - 无法在反应中更改标签
- java - Spring Boot/Java 的 LINQ 实现
- css - 使用 Wordpress 中的字体添加“预加载”
- wordpress - 如何在 Magento Docker 容器上持久化安装?
- node.js - 如何使用无服务器 AWS 进行跨应用程序
- angular - Angular 9 中未加载单个 spa 角度 i18n 文件