Manage datasets
This document describes how to manage datasets in BigQuery. After creating a dataset, you can manage the dataset in the following ways:
Before you begin
Grant Identity and Access Management (IAM) roles that give users the necessary permissions to perform each task in this document. The permissions required to perform a task (if any) are listed in the "Required permissions" section of the task.
Rename datasets
Currently, you cannot change the name of an existing dataset, but you can copy a dataset. See Copying datasets.
Copy datasets
To see steps for copying a dataset, including across regions, see Copying datasets.
Move a dataset
To manually move a dataset from one location to another, follow this process:
-
Export the data from your BigQuery tables to a Cloud Storage bucket in either the same location as your dataset or in a location contained within your dataset's location. For example, if your dataset is in the
EU
multi-region location, you could export your data to theeurope-west1
Belgium location, which is part of the EU.There are no charges for exporting data from BigQuery, but you do incur charges for storing the exported data in Cloud Storage. BigQuery exports are subject to the limits on export jobs.
-
Copy or move the data from your export Cloud Storage bucket to a new bucket you created in the destination location. For example, if you are moving your data from the
US
multi-region to theasia-northeast1
Tokyo region, you would transfer the data to a bucket you created in Tokyo. For information on transferring Cloud Storage objects, see Copying, renaming, and moving objects in the Cloud Storage documentation.Note that transferring data between regions incurs network egress charges in Cloud Storage.
-
After you transfer the data to a Cloud Storage bucket in the new location, create a new BigQuery dataset (in the new location). Then, load your data from the Cloud Storage bucket into BigQuery.
You are not charged for loading the data into BigQuery, but you will incur charges for storing the data in Cloud Storage until you delete the data or the bucket. You are also charged for storing the data in BigQuery after it is loaded. Loading data into BigQuery is subject to the limits on load jobs.
You can also use Cloud Composer to move and copy large datasets programmatically.
For more information on using Cloud Storage to store and move large datasets, see Using Cloud Storage with big data.
Check whether a dataset exists
Java
Before trying this sample, follow the Java setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Java API reference documentation.
Python
Before trying this sample, follow the Python setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Python API reference documentation.
Delete datasets
You can delete a dataset in the following ways:
- Use the Google Cloud console.
- Use the
DROP SCHEMA
DDL statement. - Use the
bq rm
command in thebq
command-line tool. - Call the
datasets.delete
API method. - Use the client libraries.
Required permissions
To delete a dataset, you need the following IAM permissions:
bigquery.datasets.delete
(lets you delete a dataset)bigquery.tables.delete
(lets you delete tables and views)
Each of the following predefined IAM roles includes the permissions that you need in order to delete a dataset:
roles/bigquery.dataOwner
roles/bigquery.admin
Additionally, if you have the bigquery.datasets.create
permission, you can delete the datasets and tables that you create.
For more information on IAM roles and permissions in BigQuery, see Predefined roles and permissions.
Delete a dataset
To delete a dataset, select one of the following options:
Console
In the Explorer panel, expand your project and select a dataset.
Expand the
Actions option and click Delete.In the Delete dataset dialog, type
"delete"
into the text box, and then click Delete.
SQL
To delete a dataset, use the
DROP SCHEMA
DDL statement.
The following example deletes a dataset named mydataset
:
In the Google Cloud console, go to the BigQuery page.
In the query editor, enter the following statement:
DROP SCHEMA IF EXISTS mydataset;
By default, this only works to delete an empty dataset. To delete a dataset and all of its contents, use the
CASCADE
keyword:DROP SCHEMA IF EXISTS mydataset CASCADE;
Click
Run.
For more information about how to run queries, see Running interactive queries.
bq
Use the bq rm
command with the (optional) --dataset
or -d
shortcut
flag to delete a dataset. When you use the bq
command-line tool to remove a dataset, you must
confirm the command. You can use the -f
flag to skip confirmation.
In addition, if the dataset contains tables, you must use the -r
flag to
remove all tables in the dataset. If you are deleting a table in a project
other than your default project, add the project ID to the dataset name in
the following format: project_id:dataset
.
bq rm -r -f -d project_id:dataset
Replace the following:
project_id
is your project ID.dataset
is the name of the dataset you're deleting.
Examples:
Enter the following command to remove mydataset
and all the tables in it
from your default project. The command uses the optional -d
shortcut.
bq rm -r -d mydataset
When prompted, type y
and press enter.
Enter the following command to remove mydataset
and all the tables in it
from myotherproject
. The command does not use the optional -d
shortcut.
The -f
flag is used to skip confirmation.
bq rm -r -f myotherproject:mydataset
API
Call the
datasets.delete
method
to delete the dataset and set the deleteContents
parameter to true
to
delete the tables in it.
C#
The following code sample deletes an empty dataset.
Before trying this sample, follow the C# setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery C# API reference documentation.
The following code sample deletes a dataset and all of its contents:
Go
Before trying this sample, follow the Go setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Go API reference documentation.
Java
The following code sample deletes an empty dataset.
Before trying this sample, follow the Java setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Java API reference documentation.
The following code sample deletes a dataset and all of its contents:
Node.js
Before trying this sample, follow the Node.js setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Node.js API reference documentation.
PHP
Before trying this sample, follow the PHP setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery PHP API reference documentation.
Python
Before trying this sample, follow the Python setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Python API reference documentation.
Ruby
The following code sample deletes an empty dataset.
Before trying this sample, follow the Ruby setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Ruby API reference documentation.
The following code sample deletes a dataset and all of its contents:
Restore tables from deleted datasets
You can restore tables from a deleted dataset as long as you are still within the dataset's time travel window. You can do this by copying each table in the deleted dataset into a newly created dataset, using a time table decorator. You must manually recreate other objects associated with the dataset, like views, materialized views, and routines.
Required roles
You must be a member of the roles/bigquery.admin
role to restore a table from
a deleted dataset.
Restore a table from a deleted dataset
To restore a table from a deleted dataset:
Create a new dataset:
bq mk tmp_dataset
Choose a timestamp from before the original dataset was deleted, using a format of milliseconds since the epoch. For example,
1418864998000
.Copy the
original_dataset.table1
table at the time1418864998000
into the newtmp_dataset
dataset:bq cp original_dataset.table1@1418864998000 tmp_dataset.table1
Repeat Step 4 for each table in the deleted dataset.
Dataset security
To control access to datasets in BigQuery, see Controlling access to datasets. For information about data encryption, see Encryption at rest.
Next steps
- For more information on creating datasets, see Creating datasets.
- For more information on updating datasets, see Updating datasets.
- For more information on copying datasets, including across regions, see Copying datasets.