我使用以下命令加载数据。
/home/bigquery/bq load --max_bad_record=30000 -F '^' company.junelog entry.gz country:STRING,telco_name:STRING,datetime:STRING, ...
当我得到非零返回码时,数据仍然被加载。如何确保命令成功?检查返回代码似乎没有帮助。有时候我再次加载了同一个文件,因为我收到了一个错误,但数据已经在bigquery中可用了。
答案 0 :(得分:1)
您可以使用装载作业的bq show -j并检查作业状态。 如果您正在编写代码来执行加载,那么您不知道作业ID,您可以将作业ID传递给加载操作(只要它是唯一的),这样您就可以知道要检查哪个作业。
例如,你可以运行
/home/bigquery/bq load --job_id=some_unique_job_id --max_bad_record=30000 -F '^' company.junelog entry.gz country:STRING,telco_name:STRING,datetime:STRING, ...'
然后
/home/bigquery/bq show --j some_unique_job_id
请注意,如果要为每个加载创建新表(而不是追加),则可以使用写处置WRITE_EMPTY来确保只有在表为空时才执行加载,从而阻止添加相同的数据两次。这在bq.py中不是直接支持的,但你可以使用底层的bigquery_client.py来进行这个调用,或直接使用REST api。