gpt4 book ai didi

google-bigquery - 如何将多个 csv 文件(不同模式)加载到 bigquery

转载 作者:行者123 更新时间:2023-12-04 01:47:31 25 4
gpt4 key购买 nike

我有 6,500 个 csv 文件,其中包含约 250 个不同的架构。即这些文件来自 F.D.I.C(美国银行监管机构)数据集。它们已上传到谷歌云存储桶: enter image description here

每个财务季度都有大约 250 个不同的 csv。一个财务季度内的每个 csv 都有不同的架构: enter image description here

大约有 250 个独特的模式。该模式在每个财政季度都会重复出现。 csv 文件可追溯到 100 个财务季度至 1992 年: enter image description here

可以使用通配符上传具有相同架构的多个 CSV。例如gs/路径/*.csv。但是,每个表名都不是从文件名自动生成的。 UI 需要一个表名作为输入: enter image description here

如何将具有不同架构的多个 csv 文件加载到 bigquery 中?

最佳答案

我要实现自动化的方法基本上是从给定存储桶(或其子文件夹)中读取所有文件,并(做出假设)使用它们的“文件名”作为要摄取的目标表名。方法如下:

gsutil ls gs://mybucket/subfolder/*.csv | xargs -I{} echo {} | awk '{n=split($1,A,"/"); q=split(A[n],B,"."); print "mydataset."B[1]" "$0}' | xargs -I{} sh -c 'bq --location=US load --replace=false --autodetect --source_format=CSV {}'

确保将 locationmydataset 替换为您想要的值。另外,请注意以下假设:

  • 假定每个 CSV 的第一行是标题,因此被视为列名。
  • 我们正在编写 --replace=false 标志,这意味着每次运行命令时都会附加数据。如果您想改写,只需将其设置为 true,所有表的数据将在每次运行时被覆盖。
  • CSV 文件名(.csv 之前的部分用作表名。您可以修改 awk 脚本以将其更改为任何其他替代方案。

关于google-bigquery - 如何将多个 csv 文件(不同模式)加载到 bigquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54652651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com