我在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表中?
答案 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
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"