Quickstart using the bq command-line tool

This page explains how to use the bq command-line tool to run queries, load data, and export data.

Before you begin

Before you begin this quickstart, use the Google Cloud Platform Console to create or select a project and install the Cloud SDK.

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Select or create a GCP project.

    Go to the project selector page

  3. Install and initialize the Cloud SDK.
  4. BigQuery is automatically enabled in new projects. To activate BigQuery in a pre-existing project, go to Enable the BigQuery API.

    Enable the API

  5. BigQuery provides a sandbox if you do not want to provide a credit card or enable billing for your project. The steps in this topic work for a project whether or not your project has billing enabled. If you optionally want to enable billing, see Learn how to enable billing.

Examine a table

BigQuery offers a number of sample tables that you can query. In this quickstart, you'll run some queries against the shakespeare table, which contains an entry for every word in every play.

To examine the schema of a specific table, run

bq show projectId:datasetId.tableId

where the project and dataset IDs can be omitted if they are the default values for your bq tool. The following example examines the shakespeare table in the samples dataset:

bq show bigquery-public-data:samples.shakespeare


Table bigquery-public-data:samples.shakespeare

   Last modified                  Schema                 Total Rows   Total Bytes   Expiration
 ----------------- ------------------------------------ ------------ ------------- ------------
  26 Aug 14:43:49   |- word: string (required)           164656       6432064
                    |- word_count: integer (required)
                    |- corpus: string (required)
                    |- corpus_date: integer (required)

Run the help command

Use bq help to get detailed information about the bq command-line tool.

bq help

Include a command name to get information about a specific command. For example, the following call to bq help retrieves information about the query command.

bq help query

Run a query

Run a query to see how many times the substring "raisin" appears in Shakespeare's works.

To run a query, run the command bq query "[SQL_STATEMENT]".

  • Escape any quotation marks inside the [SQL_STATEMENT] with a \ mark, or

  • Use a different quotation mark type than the surrounding marks (" versus ').

The following standard SQL query does a word count for the number of times that the substring "raisin" appears in all of Shakespeare's works.

bq query --use_legacy_sql=false \
   SUM(word_count) AS count
   word LIKE "%raisin%"


Waiting on job_dcda37c0bbed4c669b04dfd567859b90 ... (0s) Current status:
|     word      | count |
| Praising      |   4   |
| raising       |   5   |
| raisins       |   1   |
| praising      |   8   |
| dispraising   |   2   |
| dispraisingly |   1   |

If you search for a word that isn't in Shakespeare's works, no results are returned. For example, the following search for "huzzah" returns no matches.

bq query --use_legacy_sql=false \
  word = "huzzah"'


Waiting on job_e19 ... (4s) Current status: DONE

Create a new table

Now create your own table. Every table is stored inside a dataset. A dataset is a group of resources such as tables and views.

Step 1: Download the sample data

The sample data contains approximately seven MB of data about popular baby names, and is provided by the US Social Security Administration.

  1. Download the baby names zip file

  2. Unzip the file.

    The zip file contains a read me file that describes the dataset schema. Learn more about the dataset.

  3. Open the file named yob2010.txt to see what it looks like. The file is a comma-separated value (CSV) file with the following three columns: name, sex (M or F), and number of children with that name. The file has no header row.

  4. Copy or move the yob2010.txt file into the directory you are using to run bq commands.

Step 2: Create a new dataset

  1. Use the bq ls command to see whether your default project has any existing datasets.

    bq ls

    Sample output:

  2. Run bq ls again to list the datasets in a specific project by including the project ID followed by a colon (:). The following example lists the datasets in the publicdata project.
    bq ls publicdata:


  3. Use the bq mk command to create a new dataset named babynames in your default project. A dataset name can be up to 1,024 characters long, and consist of A-Z, a-z, 0-9, and the underscore, but it cannot start with a number or underscore, or have spaces.
    bq mk babynames

    Sample output:

    Dataset 'myprojectid:babynames' successfully created.
  4. Run bq ls to confirm that the dataset now appears as part of the default project:
    bq ls

    Sample output:


Step 3: Upload the table

The bq load command creates or updates a table and loads data in a single step.

  1. Run the bq load command to load your source file into a new table called names2010 in the babynames dataset you created above. By default, this runs synchronously, and will take a few seconds to complete.

    bq load babynames.names2010 yob2010.txt name:string,gender:string,count:integer

    The bq load command arguments:

    • datasetID: babynames
    • tableID: names2010
    • source: yob2010.txt: if necessary, include the full path to the file
    • schema: name:string,gender:string,count:integer

    Sample output:

    Waiting on job_4f0c0878f6184119abfdae05f5194e65 ... (35s) Current status: DONE
  2. Run bq ls to confirm that the table now appears in the dataset:

    bq ls babynames


       tableId    Type
     ----------- -------
      names2010   TABLE
  3. Run bq show to see the schema:

    bq show babynames.names2010


    Table myprojectid:babynames.names2010
       Last modified         Schema         Total Rows   Total Bytes   Expiration
     ----------------- ------------------- ------------ ------------- ------------
      13 Mar 15:31:00   |- name: string     34041        653855
                        |- gender: string
                        |- count: integer

By default, when you load data, BigQuery expects UTF-8 encoded data. If you have data that is in ISO-8859-1 (or Latin-1) encoding and are having problems with your loaded data, you can tell BigQuery to treat your data as Latin-1 explicitly, using the -E flag. For more information, see Character Encodings.

Step 4: Run queries

  1. Run the following command to return the most popular girls' names:

    bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'F' ORDER BY count DESC LIMIT 5"


    Waiting on job_58c0f5ca52764ef1902eba611b71c651 ... (0s) Current status: DONE
    |   name   | COUNT |
    | Isabella | 22731 |
    | Sophia   | 20477 |
    | Emma     | 17179 |
    | Olivia   | 16860 |
    | Ava      | 15300 |
  2. Run the following command to see the most unusual boys' names. The minimum count is 5 because the source data omits names with fewer than 5 occurrences.
    bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'M' ORDER BY count ASC LIMIT 5"


    Waiting on job_556ba2e5aad340a7b2818c3e3280b7a3 ... (1s) Current status: DONE
    |   name   | COUNT |
    | Aarian   |     5 |
    | Aaidan   |     5 |
    | Aamarion |     5 |
    | Aadhavan |     5 |
    | Aaqib    |     5 |

Clean up

To avoid incurring charges to your GCP account for the resources used in this quickstart:

  1. Run the bq rm command to remove the babynames dataset. Use the -r flag to delete all tables in the dataset, include the names2010 table.

    bq rm -r babynames
  2. Confirm the delete command by typing y.

What's next

Var denne siden nyttig? Si fra hva du synes:

Send tilbakemelding om ...

Trenger du hjelp? Gå til brukerstøttesiden vår.