使用java覆盖BigQuery中的表

时间:2018-05-16 21:28:54

标签: google-bigquery

我需要定期擦除表中的所有数据并从头开始。从我在这里读到的,最好的方法是删除然后创建表。我试过了,结果表中没有我在创建后立即添加的任何数据。

基本上我(在java中):

TableId myTable = TableId.of("MyDataset", "MyTable");
Table table = bigQuery.getTable(myTable);
table.delete();
TableInfo tableInfo = TableInfo.newBuilder(myTable, definition).build();
table = bigQuery.create(tableInfo);
List<RowToInsert> initialRows = new ArrayList<RowToInsert>();
... add about 5 rows to initialRows
table.insert(initialRows);

如果我不删除而不创建新表,我没有问题。此外,我仅限于使用java。

我需要采取哪些不同的想法?

1 个答案:

答案 0 :(得分:0)

虽然这是预期的行为,但也许仍有事情可以做:

bool check;
while(check ){
            Thread.sleep(1000);
            try {
                table1 = bigquery.getTable(myTable);
                out1.println( "*** deleting table: "+table2.getTableId().toString()+ " ***" );  

            } catch (Exception e) {
                check = false;
                out1.println("***     table DELETED     ***     "); 
                //break;
            }

        } 

然后确保检查行是否已添加,然后再次尝试使用指数退避(例如)。