Google bigquery 从Google Cloud SQL迁移到Google Bigquery
我需要将我的两个表从Google Cloud SQL迁移到Google Bigquery 数据规模约为1 TB,约为5个月的股市行情数据 我从文档中了解到,我可以将数据导出为CSV并将其加载到Bigquery中。我希望按照最佳实践中的建议,在GoogleBigQuery中进行日期划分。另外,我希望在迁移每个日期的数据之后进行一次健壮的验证,以确保数据在传输过程中不会损坏 我的问题是,我如何编写代码来在日期和每个循环中执行此循环:Google bigquery 从Google Cloud SQL迁移到Google Bigquery,google-bigquery,google-cloud-sql,Google Bigquery,Google Cloud Sql,我需要将我的两个表从Google Cloud SQL迁移到Google Bigquery 数据规模约为1 TB,约为5个月的股市行情数据 我从文档中了解到,我可以将数据导出为CSV并将其加载到Bigquery中。我希望按照最佳实践中的建议,在GoogleBigQuery中进行日期划分。另外,我希望在迁移每个日期的数据之后进行一次健壮的验证,以确保数据在传输过程中不会损坏 我的问题是,我如何编写代码来在日期和每个循环中执行此循环: 1.从谷歌云SQL导出 2.加载到Google BigQuery
1.从谷歌云SQL导出
2.加载到Google BigQuery
3.测试数据在传输过程中是否未损坏以下是我要做的:
撇开我可能也会为这样的任务选择数据流这一事实不谈,我一直在开发一个python示例,它完全符合Siddharth的要求。我希望它能很好地用于小数据集 它从源CloudSQL表中收集一个天数列表。然后,每天: 1) 将相关的CloudSQL行导出到单独的CSV文件中 2) 将每个CSV加载到单独的BQ表中,然后 3) 在MySQL和BQ中启动一个简单的验证查询
if __name__ == '__main__':
days = mysql_distinct_days()[:NUM_DAYS_TO_TEST]
do_extract_and_load(days)
do_checks(days)
if DELETE_TABLES:
delete_tables(days)
我分享了一篇文章,希望它能对将来的人有所帮助。:-) 您可以使用BigQuery将云SQL表复制到BigQuery中。您可以使用一条BigQuery SQL语句来实现这一点。例如,下面的SQL将MySQL表sales_20191002复制到BigQuery表demo.sales_20191002
INSERT
demo.sales_20191002 (column1, column2 etc..)
SELECT
*
FROM
EXTERNAL_QUERY(
"project.us.connection",
"SELECT * FROM sales_20191002;");
外部查询(“连接”、“外部SQL”)
将在“连接”中指定的云SQL数据库中执行“外部SQL”,并将结果返回给BigQuery。“外来SQL”是源数据库SQL方言(MySQL或PostgreSQL)
在运行上述SQL查询之前,您需要创建一个指向您的云SQL数据库的BigQuery连接
最后,您可以通过检查两个表的一些高级统计信息来验证数据质量。例如,行数是否匹配?分组结果一致吗 我不认为有一种简单的方法可以在循环中完成所有三个步骤。我知道在每个循环中,您都希望加载到BQ中,导出的csv结果是:select*from table where day=SOME_day,我认为这是无法通过编程实现的。我理解对了吗?另外,对于第三步,您基本上需要检查批量加载作业结果中返回的错误。是的,您理解正确。我想我们不能以编程方式导出CSV,但可以使用gcloud命令行工具导出为SQL转储文件。可以通过编程方式将该转储上传到bigquery吗?谢谢。步骤1和2是否可以通过编程方式完成?如果是,请包括代码/链接。还有,什么SQL可以验证数据?运行此命令也会产生错误,什么样的SQL可以验证数据?运行此命令会出现错误“从[project:database.table]中选择MD5(bid_price)”,就像“MD5不存在”,尽管MD5是一个函数。该表有数十亿行,我无法实际验证每个数据点。我希望能够匹配原始和最终bigquery表中每一列的MD5或其他校验和。MD5为您工作,因为您使用的是遗留SQL。切换到标准SQL以使其工作。@Siddharth您能确认使用legacySQL时引发的实际错误是“无法识别的函数md5”而不是“md5不存在”吗?