我在 S3 存储桶中得到了一堆压缩的 CSV 文件,我想将它们导入到 BigQuery 中。从文档中看,BQ 可以从不同的来源导入 gzip 数据。但是,当我配置数据传输作业时,它只允许 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档案。
有没有一种方便的方法可以将 Gzip 压缩的 CSV 文件从 S3 导入 BQ 表?
除了从 UI 提供的 bigquery s3 数据传输之外,如果您正在寻找通过 CLI 的替代方法。您可以使用带有 aws 凭证的gsutil -o
将文件复制到 google cloud storage,bq
cli 将文件传输到 bigquery 以及 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"