Google cloud platform 加载操作中的GCP Bigquery错误:缺少字节
我对谷歌云平台非常陌生,我正试图在bigquery中从存储在GCP bucket中的~60000Google cloud platform 加载操作中的GCP Bigquery错误:缺少字节,google-cloud-platform,google-bigquery,gzip,bq,Google Cloud Platform,Google Bigquery,Gzip,Bq,我对谷歌云平台非常陌生,我正试图在bigquery中从存储在GCP bucket中的~60000csv.gz文件创建一个表 为此,我打开了Cloud Shell,并尝试以下操作: $bq--location=US mk my_数据 $bq——地点=美国\ load--null_标记=“”\ --source_format=CSV——自动检测\ my_data.my_表gs://my_bucket/*.csv.gz 这会引发以下错误: 加载操作中的BigQuery错误:处理作业“我的作业:bqj
csv.gz
文件创建一个表
为此,我打开了Cloud Shell,并尝试以下操作:
$bq--location=US mk my_数据
$bq——地点=美国\
load--null_标记=“”\
--source_format=CSV——自动检测\
my_data.my_表gs://my_bucket/*.csv.gz
这会引发以下错误:
加载操作中的BigQuery错误:处理作业“我的作业:bqjob”时出错
读取数据时出错,错误消息:
失败的前提条件:无效的gzip文件:缺少字节
我不知道如何找到加载文件时可能出现问题的文件。我已经检查了一些文件,它们都是有效的.gz
文件,解压后我可以用任何csv阅读器打开它们,但我不知道如何检查所有文件以找到有问题的文件
提前感谢您对此的任何帮助 中可能存在不包含任何数据的.gz文件。您可能需要编写一个脚本,该脚本将过滤.gz文件是否有效 这个示例bash脚本将通过.gz文件执行目录循环,如果文件为空,则将其删除
for f in dir/*
do
if [[ $(gunzip -c $f | head -c1 | wc -c) == "0" ]]
then
do_file_creation
fi
done
要在铲斗中循环,可以使用eval命令
#!/bin/bash
FILES="gsutil ls gs://YOUR_BUCKET"
RESULTS=$(eval $FILES)
for f in $RESULTS
do
read="gsutil cat $f | zcat | wc -c"
if [[ $(eval $read) == "0" ]]
then
#<Process it, Print name or Delete from bucket like below>
delete="gsutil rm $f"
eval $delete
fi
done
谢谢@Rally H!您知道如何将其作为GCP bucket中目录的bash运行吗?
gsutil -m cp -R gs://YOUR_BUCKET .