Skip to content

bigquery.table.Table.upload_from_file() doesn't check the initial request response status #2132

Closed

Description

@theacodes

If you try to add data to a table from a file without a schema:

bigquery_client = bigquery.Client()
dataset = bigquery_client.dataset(dataset_name)
table = dataset.table(table_name)

    with open(source_file_name, 'rb') as source_file:
        job = table.upload_from_file(
            source_file, source_format='text/csv', rewind=True)

job.begin()

This will fail with an opaque error:

Traceback (most recent call last):
  File "load_data_from_file.py", line 74, in <module>
    args.source_file_anme)
  File "load_data_from_file.py", line 40, in load_data_from_gcs
    source_file, source_format='text/csv', rewind=True)
  File "/Users/jonwayne/workspace/python-docs-samples/bigquery/cloud-client/env/lib/python3.4/site-packages/gcloud/bigquery/table.py", line 913, in upload_from_file
    return client.job_from_resource(json.loads(response_content))
  File "/Users/jonwayne/workspace/python-docs-samples/bigquery/cloud-client/env/lib/python3.4/site-packages/gcloud/bigquery/client.py", line 119, in job_from_resource
    config = resource['configuration']
KeyError: 'configuration'

Inspection of the response from the initial upload request reveals the problem:

status: 400
body:
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "Empty schema specified for the load job. Please specify a schema that describes the data being loaded.",
...

It seems we should check the response before constructing the job.

Activity

  1. added
    type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.
    api: bigqueryIssues related to the BigQuery API.
    on Aug 18, 2016
  2. theacodes commented on Aug 18, 2016

    @theacodes
    ContributorAuthor

    Weirdly enough you can upload data to a table from GCS without needing a schema.

  3. changed the title [-]bigquery.table.Table.upload_from_file() doens't check the initial request response status[/-] [+]bigquery.table.Table.upload_from_file() doesn't check the initial request response status[/+] on Aug 18, 2016
  4. self-assigned this
    on Sep 20, 2016
  5. tseaver commented on Sep 20, 2016

    @tseaver
    Contributor

    Issue is similar to #1712 for Storage: look at #1717 for the fix there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

api: bigqueryIssues related to the BigQuery API.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions