0

在 Google Storage 中,我有一个存储桶,其中一个文件夹包含文件,一个子文件夹包含相同类型的文件,如下所示:

bucket1
|_ folder1
|  |_ fileD.csv
|  |_ fileE.csv
|_ fileA.csv
|_ fileB.csv
|_ fileC.csv

当我这样做时,bq load --source_format=CSV my.table gs://bucket1/*.csv它还会加载吗?fileD.txtfileE.csv

4

1 回答 1

1

你的问题的答案是肯定的。

实际上,GCS将文件和目录都视为相似的对象。表示下面的路径,例如引用名称以gs://my-bucket/directory1/开头并以.csv结尾的对象

gs://my-bucket/directory1/*.csv 


现在假设我们在存储桶my-bucket中只有目录directory1

在这种情况下,以下任何路径都会带来相同的结果:

gs://my-bucket/directory1/*.csv 
gs://my-bucket/direct*.csv 
gs://my-bucket/directory1/* 
gs://my-bucket/d*.csv 
gs://my-bucket/*.csv 
[...]


最后,假设我们在存储桶my-bucket中有目录directory1directory1_test

在这种情况下,让我们看看它是如何工作的:

  1. 仅参考第一个目录:

    gs://my-bucket/directory1/*.csv 
    
  2. 仅引用第二个目录:

    gs://my-bucket/directory1_*.csv 
    gs://my-bucket/directory1_t*.csv 
    gs://my-bucket/directory1_teste*.csv 
    gs://my-bucket/directory1_teste/*.csv 
    [...]
    
  3. 引用两个目录:

    gs://my-bucket/directory1*.csv 
    


鉴于此,您应该更多地考虑对象文件名,而不是目录和子目录。

于 2020-05-20T10:21:09.653 回答