 <p>As @piggybox already mentioned, it is not possible directly. But you can use Python/ Java SDK to do the copy on individual tables and simulate a transaction. </p> <p>If your tables are consumer facing and you do not want the data to be visible until all the tables are loaded, you can first load the data to staging tables and use a config table for the live status. Your Python/ Java script should keep polling this config table and as soon as the status is "ready/ good-to-go" for all the tables, you can do deep copy (insert as select) from the staging tables into the actual tables. These inserts will be DML so you can control them in a single transaction.</p>