如何将值插入到python中的嵌套表中?
Posted
技术标签:
【中文标题】如何将值插入到python中的嵌套表中?【英文标题】:How to insert values into nested table in python? 【发布时间】:2019-03-21 14:47:07 【问题描述】:我在 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 个索引出现问题。
请指教 谢谢
【问题讨论】:
嗨@SriHari,您能否提供您收到的确切错误消息并分享您正在使用的代码 【参考方案1】:您可以按照创建表的顺序插入数据。
举个例子:
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)
如果有帮助请告诉我!
【讨论】:
嗨@hkanjih 谢谢你的回复......我刚刚找到了解决方案。不需要在 SQL 命令中指定 STRUCT。我们可以提供元组列表,以便它可以直接传递给查询,这有助于插入。以上是关于如何将值插入到python中的嵌套表中?的主要内容,如果未能解决你的问题,请参考以下文章
当嵌套表属于记录类型时,如何将数据填充到 Oracle 中的嵌套表中