BigQuery脚本,用于使用联合查询将Google Cloud Postgres表复制到BigQuery

249

我有一个Google Cloud Postgres实例,并且我正在尝试使用运行联合查询的脚本将架构中的所有表复制到单独的google bigquery表中,该脚本将按一定间隔运行。我正在使用来自information_schema的数据,因为我希望脚本也能够选择新添加的表。

可以说,分析架构有4个表。

analytics.table1
analytics.table2
analytics.table3
analytics.table4

下面的示例代码将生成分析模式中所有表的列表,并将其设置为变量名“ table_name”。

DECLARE table_name ARRAY<STRING>;

SET table_name=(
SELECT * FROM EXTERNAL_QUERY("<your_connection_id>",
    "select table_schema||'.'||table_name as table_name from information_schema.tables 
        where table_schema='analytics';");
);

此脚本的目的是使用下面的查询创建四个单独的bigquery表

CREATE TABLE analytics.table1 AS
SELECT * FROM EXTERNAL_QUERY("<your_connection_id>", "SELECT * FROM analytics.table1");

CREATE TABLE analytics.table2 AS
SELECT * FROM EXTERNAL_QUERY("<your_connection_id>", "SELECT * FROM analytics.table2");

CREATE TABLE analytics.table3 AS
SELECT * FROM EXTERNAL_QUERY("<your_connection_id>", "SELECT * FROM analytics.table3");

CREATE TABLE analytics.table4 AS
SELECT * FROM EXTERNAL_QUERY("<your_connection_id>", "SELECT * FROM analytics.table4");

遍历我的表“ table_name”列表以使用单独的sql语句创建这些表的最佳方法是什么?

斯凯姆

您可以尝试以下解决方案:

DECLARE TABLE_LIST ARRAY<STRING>;
DECLARE DSQL STRING;
DECLARE i INT64 DEFAULT 1;
DECLARE cnt INT64 DEFAULT 0;
SET TABLE_LIST = ARRAY(SELECT * FROM EXTERNAL_QUERY("connection-id", "SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'analytics';"));
SET cnt = ARRAY_LENGTH(TABLE_LIST);
WHILE i <= cnt 
DO
  SET DSQL = '"SELECT * FROM analytics.' || TABLE_LIST[ORDINAL(i)] || '"';
  EXECUTE IMMEDIATE 'CREATE TABLE analytics.' || TABLE_LIST[ORDINAL(i)] || ' AS SELECT * FROM EXTERNAL_QUERY("connection-id",' || DSQL || ');';
  SET i = i + 1;
END WHILE;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用于查询 bigquery 的 Google Cloud Run 权限

将文件从 Google Cloud Shell 复制到 GCP VM

如何使用Google Cloud Python API将目录复制到Google Cloud Storage?

使用Google Cloud Dataflow执行Google Bigquery查询

简单的 Google Cloud 部署:将 Python 文件从 Google Cloud 存储库复制到应用引擎

多区域Cloud SQL联合BigQuery查询无法运作

Google Cloud Firestore:如何将 Firestore 集合复制到 Cloud Storage

Google Cloud BigQuery 不爽?

将BigQuery表的并发导出扩展到Google Cloud Storage

如何使用python将非分区表复制到bigquery中的摄取时间分区表中?

如何使用Google Cloud将Dataproc中的GCS存储桶中的文件复制到HDFS?

将参数从 Google Cloud Function GET 请求传递到 BigQuery

将数据插入Google Cloud中的bigquery表时出错?

使用 liquibase 将 postgres 表复制到另一个模式

使用Python将表从Cloud Storage加载到BigQuery

如何将文件从Google Cloud Compute Server复制到本地计算机

将文件从远程服务器复制到Google Cloud Bucket

如何将文件从Google Cloud复制到本地计算机?(云壳)

如何将文件从SSH复制到Google Cloud Repo

将文件从 S3 存储桶复制到 Google Cloud Storage

将数据框复制到具有默认值的列的postgres表

使用Google Cloud Functions Node JS将事件驱动的文件复制到其他Google存储桶

如何使用 gsutil 将文件从 Google Cloud Storage 存储桶 1 复制到存储桶 2,同时保留 ACL

使用 Django 将目录从 Google Cloud Storage Bucket 递归复制到另一个 Google Cloud Storage Bucket

将WITH子查询的输出复制到Postgres中的CSV

根据文件名将Google Cloud存储桶中的多个文件复制到不同目录

从Google Cloud Storage Bucket复制到S3 Bucket

BigQuery - 使用 INSERT INTO 将数据从一个嵌套表复制到另一个嵌套表

在构建期间将文件从GCS复制到Cloud Run docker容器