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

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

有大约 250 个独特的模式。每个财务季度都会重复这种模式。csv 文件可追溯到 1992 年 100 个财务季度:

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

如何将具有不同架构的多个 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 {}'
Run Code Online (Sandbox Code Playgroud)
确保将location,替换mydataset为您想要的值。另外,请注意以下假设:
--replace=false标志进行写入,这意味着每次运行命令时都会附加数据。如果您想覆盖,只需将其转到true,所有表的数据将在每次运行时被覆盖。.csv用作表名。您可以修改 awk 脚本以将其更改为任何其他替代方案。| 归档时间: |
|
| 查看次数: |
2990 次 |
| 最近记录: |