Как вставить значения во вложенную таблицу в Python? - PullRequest
1 голос
/ 21 марта 2019

Я создал вложенную таблицу в bigQuery и хотел бы вставить значения в эту таблицу.

Я знаю, что обычно мы можем выполнить, как показано ниже:

INSERT INTO `tablename`(webformID,visitID,visitorID,loginID,mycat,country,webformData) VALUES ('1',2,'3','4','5','6',[STRUCT('key2','b'),('k3','c'),('k4','d')])

где данные веб-формы - это вложенный столбец.

Однако, в Python, как мы можем это сделать?

Я могу создать список следующим образом: ["STRUCT('key2','b')",('k3','c')], но 0-й индекс является проблемой при попытке вставить.

Пожалуйста, совет Спасибо

1 Ответ

2 голосов
/ 21 марта 2019

Вы можете вставить данные в том же порядке, в котором была создана таблица.

Следуйте примеру:

from google.cloud import bigquery

client = bigquery.Client.from_service_account_json(JSON_FILE_NAME)
dataset_id = 'test'  # replace with your dataset ID
table_id = 'tablek1'  # replace with your table ID

schema = [
        bigquery.table.SchemaField('column1', 'STRING', mode='REQUIRED'),
        bigquery.table.SchemaField('parent', 'RECORD', mode='REQUIRED', fields = [
            bigquery.table.SchemaField('children1', 'STRING', mode='NULLABLE'),
            bigquery.table.SchemaField('children2', 'INTEGER', mode='NULLABLE')])
    ]

dataset_ref = bigquery.Dataset(client.dataset(dataset_id))
table_ref = dataset_ref.table(table_id)
table = bigquery.Table(table_ref, schema=schema)
table = client.create_table(table)  # API request

# IF YOU NEED GET THE TABLE
# table_ref = client.dataset(dataset_id).table(table_id) 
# table = client.get_table(table_ref)  # API request

rows_to_insert = [
    (
        "test 1", dict(children1 = 'test', children2 = 29 ),     
    )
]

errors = client.insert_rows(table, rows_to_insert)  # API request
print(errors)

Дайте мне знать, если это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...