2012-06-12 2 views
0

У меня есть текстовый файл schema.txt, в котором определена схема для таблицы, которую я хочу создать.Задание схемы таблицы bigquery, которая находится в файле в многострочном HTTP-запросе

Я хочу включить этот файл в многостраничный HTTP-запрос, который я использую для создания моей таблицы.

Как указать файл schema.txt в многостраничном HTTP-запросе?

Ниже то, что я сейчас делаю (не работает, хотя):

def loadTable(service, projectId, datasetId, targetTableId, sourceCsv, filenm): 
try: 
    jobCollection = service.jobs() 
    jobData = { 
     'projectId': projectId, 
     'configuration': { 
      'load': { 
       'sourceUris': [sourceCsv], 
       'schema': filenm, 
       'destinationTable': { 
        'projectId': projectId, 
        'datasetId': datasetId, 
        'tableId': targetTableId 
       }, 
       'createDisposition': 'CREATE_IF_NEEDED', 
       'writeDisposition': 'WRITE_TRUNCATE', 
       'encoding': 'UTF-8' 
      } 
     } 
    } 

filenm Где будет 'schema.txt'.

Я знаю, что могу задать схему непосредственно как:

'schema': { 
    'fields': [ 
       { 
        'name': 'level', 
        'type': 'STRING', 
       }, 
       { 
        'name': 'message', 
        'type': 'STRING', 
       } 
       ] 
      }, 

Но вместо этого я хочу, чтобы указать файл, содержащий схему.

ответ

0

Хм, не уверен, почему вам нужен «многостраничный HTTP-запрос», если вы не проглатываете прямо из файла. Здесь вы указываете ввод CSV, указав объект Cloud Storage.

Смотрите здесь для получения дополнительной информации: https://developers.google.com/bigquery/docs/developers_guide#storageimport

В любом случае, это на самом деле не BigQuery вопрос, больше вопрос Python .. Вы имеете в виду это?

import json 

def loadTable(project_id, dataset_id, target_table, source_csv, filename): 

    file = open(filename, 'r') 
    schema = file.read() 
    file.close() 

    schema_json = json.loads('{%s}' % schema) 

    job_data = { 
    "projectId": project_id, 
     "configuration": { 
      "load": { 
       "sourceUris": [source_csv], 
       "schema": schema_json, 
       "destinationTable": { 
        "projectId": project_id, 
        "datasetId": dataset_id, 
        "tableId": target_table 
       }, 
       "createDisposition": "CREATE_IF_NEEDED", 
       "writeDisposition": "WRITE_TRUNCATE", 
       "encoding": "UTF-8" 
      } 
     } 
    } 


    print json.dumps(job_data, indent=2) 

loadTable('project_id', 'dataset_id', 'target_table', 'source_csv', '/tmp/schema.txt')