Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动将Google云存储文件导入Google云MySQL表_Mysql_Google Cloud Platform_Automation_Google Cloud Storage_Google Cloud Sql - Fatal编程技术网

自动将Google云存储文件导入Google云MySQL表

自动将Google云存储文件导入Google云MySQL表,mysql,google-cloud-platform,automation,google-cloud-storage,google-cloud-sql,Mysql,Google Cloud Platform,Automation,Google Cloud Storage,Google Cloud Sql,目前,我在一个GCS存储桶中有一个CSV,它通过托管在谷歌云上的管道每天更新。我已经使用这个CSV通过云UI导入功能在MySQL数据库中填充了一个表,没有任何问题 我想做的是每天在设定的时间运行此导入以更新表数据,因为我的管道将更新我的CSV。我看不到任何UI功能可以做到这一点,也不确定最好的方法是什么。我更像是一名数据分析师,而不是一名SWE,因此试图破解云运行之类的功能有点棘手…目前,GCP的产品、BigQuery、云扳手、数据存储等都有默认管道,这些管道由数据流提供。数据流不支持将云存储上

目前,我在一个GCS存储桶中有一个CSV,它通过托管在谷歌云上的管道每天更新。我已经使用这个CSV通过云UI导入功能在MySQL数据库中填充了一个表,没有任何问题


我想做的是每天在设定的时间运行此导入以更新表数据,因为我的管道将更新我的CSV。我看不到任何UI功能可以做到这一点,也不确定最好的方法是什么。我更像是一名数据分析师,而不是一名SWE,因此试图破解云运行之类的功能有点棘手…

目前,GCP的产品、BigQuery、云扳手、数据存储等都有默认管道,这些管道由数据流提供。数据流不支持将云存储上的文本文件转换为云SQL(Mysql等)

我认为,你可以写函数。该函数的作用是,如果doc添加了云存储,它将读取所有的doc并在MySQL中写入表的相关部分

您可以使用gcloud命令工具或restapi(beta版)自动导入MySQL。
为了更好地理解

如果您有CSV,并且希望在Datastudio中可视化数据,我建议您使用BigQuery。这是一个PB级的数据仓库,拥有大量的功能

其中之一是直接从云存储读取数据和查询数据的能力:。这不是最有效的,但对你来说是最有用的

您还可以读取文件并将结果存储在带有
INSERT。。。选择…
语句

最后,您可以使用BigQuery。也不是很难,但需要更多代码(在云存储中创建文件时捕获事件,然后将其加载到BigQuery)。但对于这样的简单代码,我相信您可以找到云函数和云运行的示例


因此,当数据位于BigQuery中时,您可以简单地使用SQL查询请求它们,就像使用MySQL一样。BigQuery是一种无服务器产品,您只需支付存储的数据量(如果存储在BigQuery中,则支付存储在云存储中的数据量)和处理的数据量


您也有很多很棒的文章来解释如何使用和限制BigQuery的成本;我也

更新:我最后做了一些事情来解决我的问题。TL;DR BigQuery+事件触发功能:

  • 我放弃了MySQL实例,取而代之的是BigQuery表。我考虑过使用联邦表(对于像我这样的新手来说,是外部数据源),但由于读取时间慢,而且可能需要定期查看数据,我觉得这对我来说太笨重了

  • 我创建了一个函数,该函数在我的GCS存储桶中添加或覆盖文件时触发。此函数导致CSV导入到我的表中,经过一些修改后,允许我截断(覆盖)数据,这对于如何设置管道非常有用。感谢guillaume blaquiere和Mehmet Karakose提出了这条路径,但就其本身而言,我还没有足够的技能来实际编写和设置我自己的函数

  • 为了实现#2,我使用了rickt.org上的这个非常方便的指南:。这提供了一个逐步编写和设置函数以触发GCS存储桶更改的过程

  • 对于那些对我的修改感到疑惑的人:

    a。我添加了一个job_config.write_处置行,设置为write_TRUNCATE以进行覆盖

    b。我还将uri值更改为仅包含我指定的一个CSV,而不是bucket中的所有文件


  • 有一个小的许可问题,以确保我的文件/存储桶可由与该功能相关联的服务帐户访问,但没有太大的问题。测试该函数显示成功,我的BigQuery表按预期更新。我将在接下来的几个晚上进行监控,以确保这一功能继续发挥作用,并编辑此响应,以防我被误认为任何不可预见的原因。

    您如何处理MySQL中的数据?是低延迟服务吗?或者用于数据分析(因为您是数据分析师!)?我想将其读入DataStudio并在那里创建一些图表/viz。我最初在GCS中使用我的CSV,但是现在它超过了100MB的文件大小限制,所以我不得不使用不同的数据访问方法。我在看BigQuery,但看起来它的起价是每月约480美元,只是对于节点来说,这远远超出了我必须使用的预算,除非我误解了BigQuery的定价……我是错误地查看BigTable,而不是BigQuery。我在BigQuery中将我的CSV文件作为一个表加载,它非常适合查询,并且似乎适合连接到DataStudio。是否知道BigQuery表是否会随着GCS bucket中的CSV更新而更新?我的管道将在凌晨3点运行,所以我可以等到明天,但我希望在此之前设定我的期望值……如果您使用联邦查询,BigQuery将在GCS中读取CSV,而不是在BigQuery表中。我想我需要帮助的是您的节选项(使用gcloud命令工具),因为它们有点超出我的专业知识范围。我已经通读了文档,但是没有一个例子,我不清楚如何真正做到这一点