我在BigQuery table(src_table)
中有一些数据,我想将数据插入另一个BigQuery table(tgt_table)
中。
我有两种插入数据的方法
Run a bq query --destination_table=tgt_table "select req_columns from src_table"
或
insert into tgt_table(req_cloumn_list) select req_columns from src_table
。
推荐使用两种方法中的哪一种?两种方法在性能和最佳实践方面有什么区别。
对于使用目标表的第一条语句,我可以选择仅在空选项时覆盖,追加或写入。我也可以在DML中使用类似的选项吗?
我要处理的实际插入是一个复杂的查询,涉及嵌套表和多个联接。处理的数据可能超过1TB。
答案 0 :(得分:0)
这两个选项应该没有明显的性能差异。一个区别是,当您使用INSERT时,作业的统计信息将设置ddlOperationPerformed and ddlTargetTable个属性。是的,DML语句和SELECT语句的“写入处置”选项之间的功能通常有所不同,但是,如果可以的话,最好使用DML语句,因为经验将与其他SQL方言相似。