从S3导入.gz文件到BigQuery

时间:2019-06-20 08:47:27

标签: csv amazon-s3 google-bigquery gzip

我在S3存储桶中有一堆压缩的CSV文件,我想将其导入到BigQuery中。从文档中可以看出,BQ可以从不同来源导入压缩数据。但是,当我配置数据传输作业时,它仅支持CSV,JSON,AVRO,PARQUET和ORC文件格式。

已将传输作业配置为CSV文件格式并运行,它将记录以下内容:

Moving data from Amazon S3 to Google Cloud complete: Moved 64 object(s).    
Summary: succeeded 0 jobs, failed 0 jobs.

所以看来无论如何也不要研究.gz档案。

是否有方便的方法将压缩的CSV文件从S3导入到BQ表中?

2 个答案:

答案 0 :(得分:0)

如果其他人需要有关Amazon S3 data transfers支持的格式的信息:

  

支持的文件格式

     

BigQuery Data Transfer Service当前支持以以下格式之一从Amazon S3加载数据:

     
      
  • 逗号分隔值(CSV)
  •   
  • JSON(以换行符分隔)
  •   
  • Avro
  •   
  • 实木复合地板
  •   
  • ORC
  •   
     

支持的压缩类型

     

Amazon S3的BigQuery数据传输服务支持加载压缩数据。 BigQuery Data Transfer Service支持的压缩类型与BigQuery加载作业支持的压缩类型相同。有关更多信息,请参见Loading compressed and uncompressed data

此外,here是设置Amazon S3数据传输的说明,以及指向troubleshooting的链接。

答案 1 :(得分:0)

除了UI提供的bigquery s3数据传输外,如果您正在寻找通过CLI的替代方法。您可以将gsutil -o与AWS凭证一起使用,以将文件复制到Google云存储中,并使用bq CLI通过schema file in json

将文件传输到bigquery
 echo "source s3 bucket:"$source_bucket""
 echo "target gcs bucket:"$dest_bucket""
 SCHEMA="/path/to/schema/file"
 dir_data=$(gsutil -o "Credentials:aws_access_key_id=${aws_access_key_id}" \
     -o "Credentials:aws_secret_access_key=${aws_secret_access_key}" \
     ls "$source_bucket")
 echo "files to transfer "$dir_data""
 echo "transfering data into google storage $dest_bucket"
 tr_data=$(gsutil -m -o "Credentials:aws_access_key_id=${aws_access_key_id}" \
     -o "Credentials:aws_secret_access_key=${aws_secret_access_key}" \
     cp "$source_bucket"* "$dest_bucket")
 echo "bq transfer - $target_dataset"
 bq --debug_mode=true load --source_format=CSV \
     --encoding=UTF-8 --allow_jagged_rows --allow_quoted_newlines \
     --skip_leading_rows=1 "$target_table" "$dest_bucket"part-*.gz "$SCHEMA"
 echo "transfer to bq complete"