将Google Cloud SQL数据导入BigQuery的最佳方法

12

我在Cloud SQL实例中有一个数据库。我想将其内容复制到BigQuery中进行分析。 对我来说,并不需要持续更新BigQuery数据集。如果只进行一次导出,那就可以了。

最好的方法是什么?

'Create Table' BigQuery界面不允许我从Cloud SQL导入(仅限文件、Cloud Storage、Drive或BigTable)。


我可能会将其导出为 CSV 文件到 GCS 中,然后从那里将其加载到 BigQuery 中。这将是最简单的方法。https://stackoverflow.com/questions/27784743/upload-google-cloud-sql-backup-to-bigquery - Graham Polley
4个回答

13

通过Cloud SQL联合查询,BigQuery可以直接查询Cloud SQL。它引入了一个名为EXTERNAL_QUERY(connection_id, external_sql)的新SQL函数,该函数在由connection_id指定的Cloud SQL数据库中运行external_sql

您需要首先在BigQuery中创建连接,然后在EXTERNAL_QUERY()中引用connection_id。以下是将Cloud SQL数据复制到BigQuery的示例查询:

INSERT
  demo.customers (column1)
SELECT
   * 
FROM
   EXTERNAL_QUERY("project.us.connection",
                  "SELECT column1 FROM mysql_table;");

1
注意:联合查询可能不如查询驻留在BigQuery存储中的数据性能好。 - UsamaAmjad
这节省了我数天的工作时间(而不是实现一些批处理或流式加载数据到 BigQuery 的方法)!非常感谢!(也感谢 GCP 提供此功能!) - Philippe Hebert

5

在连接到您的CloudSQL服务器后,您可以使用它在单个查询中从BigQuery创建表。

CREATE TABLE CUSTOMER AS
SELECT * FROM EXTERNAL_QUERY("<your_connection_id>", "SELECT * FROM CUSTOMER");

3
目前还没有自动化工具将数据从Cloud SQL导入到BigQuery中,因此您可以遵循以下步骤:
  1. 按照文档中所述的方法,以 CSV 格式导出您 Cloud SQL 实例中需要的表中的数据。
  2. 按照文档中所述的方法,将 CSV 数据导入到您想要的 BigQuery 表中。
完成。如果您的数据库很大并且有很多表格,则可能希望使用API进行自动导入。

请注意,我遇到了许多导入错误:“读取数据时出错,错误消息:在位置387处开始解析行时检测到错误。错误:遇到坏字符(ASCII 0)。 (错误代码:无效)” - Steren

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接