如何通过bigquery删除cloudsql mysql记录联合查询给出错误“无法从 MySQL 服务器获取查询架构”

问题描述

你好谷歌云和 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 等)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...