问题描述
你好谷歌云和 bigquery 专家:-)
我在 GCP 中有一个 cloudsql MysqL 数据库和一个 BigQuery 数据库 我需要使用类似于 bigquery 联合查询的机制删除 cloudsql MysqL 数据库中的某些记录。 例如见下文(不在课程之外工作:-()
SELECT * FROM EXTERNAL_QUERY("uca-proddev-devops.us-east1.uca-useast-cloudsql-conn"," DELETE from inventory. cloud_object_events where cloud_object_id in (SELECT cloud_object_id from inventory.cloud_objects where date_created < CURDATE() - INTERVAL 60 DAY);”);
Invalid table-valued function EXTERNAL_QUERY
Failed to get query schema from MysqL server. Error: MysqLErrorCode(0): at [3:15]
我在 (https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries) 查看了 Cloud sql 联合查询文档。它清楚地提到“external_database_query (string): 是外部数据库的 sql 方言(MysqL 或 Postgresql)中的只读查询。
因此,我似乎无法使用基于 bigquery 中的数据的条件直接使用联合查询机制从 cloudsql 中删除记录。
从 BigQuery 导出数据并导入到 cloudsql 以形成删除查询过于严格。 有没有更方便的机制可以让我根据 BigQuery 中的数据从 cloudsql 中删除。
感谢您的帮助
解决方法
您无法使用 Cloud SQL 联合表删除/更新数据。您只能在 Cloud SQL 中读取。
您需要在其他地方实现自己的流程(Cloud Functions、Cloud Run 等)