【问题标题】:How to load multiple files (same schema) into a table in BigQuery?如何将多个文件(相同架构)加载到 BigQuery 中的表中?
【发布时间】:2017-07-07 07:10:06
【问题描述】:

我有一个包含相同架构的 csv 文件文件夹,我想加载到 bigquery 表中。

是否可以选择将文件夹路径作为 BQ 命令的输入以加载到 bigquery 表中?我很想知道是否可以在不迭代文件或在源头合并输入文件的情况下完成。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    如果可以选择使用云存储,您可以将它们全部放在存储桶中的公共前缀中并使用通配符,例如gs://my_bucket/some/path/files* 快速指定具有多个输入的单个加载作业。

    【讨论】:

    • 谢谢。这样可行。如果文件在子文件夹中怎么办?我们可以设置选项以递归地从子文件夹加载数据吗?
    • GCS 在这方面不是文件系统,路径实际上只是二进制对象的键。换句话说,gs:// 路径中有多少斜杠并不重要,只要您的字符串前缀仅匹配您想要的 CSV 文件。
    • 是否需要通过google云存储上传大量文件(数千个文件)?我只看到使用 GCS 的答案,但这是非常间接的,而且可能更昂贵。
    【解决方案2】:

    注意

    您只能对存储桶中的对象(文件名)使用一个通配符。通配符可以出现在对象名称内或对象名称的末尾。不支持将通配符附加到存储桶名称。

    因此不支持gs://my_bucket/some/*/files* 之类的内容。

    来源:https://cloud.google.com/bigquery/docs/loading-data-cloud-storage#load-wildcards

    【讨论】:

      【解决方案3】:

      如果您想递归地包含所有 CSV,文件可以位于子目录中:

      bq load --source_format=CSV \
      dataset_name.table_name \
      "gs://my_bucket/folder/*.csv"
      

      这会在中间路径和文件名上放置一个通配符。 (例如 * 扩展为 subfolder/folder2/filename

      【讨论】:

        猜你喜欢
        • 2017-01-03
        • 1970-01-01
        • 2019-07-06
        • 2018-07-31
        • 1970-01-01
        • 2019-02-17
        • 2020-04-17
        • 1970-01-01
        • 2018-09-22
        相关资源
        最近更新 更多