我使用以下命令加载数据。
/home/bigquery/bq load --max_bad_record=30000 -F '^' company.junelog entry.gz country:STRING,telco_name:STRING,datetime:STRING, ...
碰巧当我得到非零返回码时,数据仍然被加载。如何确保命令成功与否?检查返回码似乎没有帮助。有时我再次加载相同的文件,因为我收到错误但数据已经在 bigquery 中可用。
我使用以下命令加载数据。
/home/bigquery/bq load --max_bad_record=30000 -F '^' company.junelog entry.gz country:STRING,telco_name:STRING,datetime:STRING, ...
碰巧当我得到非零返回码时,数据仍然被加载。如何确保命令成功与否?检查返回码似乎没有帮助。有时我再次加载相同的文件,因为我收到错误但数据已经在 bigquery 中可用。
您可以使用加载作业的 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。