我正在尝试用现有的BQ表创建新表,所有这些都在python中进行。到目前为止,我已经使用一些类似的代码成功创建了该表,但是现在我想从另一个表向该表添加另一列-我没有成功。我认为问题出在我的SQL代码中。
基本上,我想要在这里添加另一个名为“ ip_address”的列,并将来自另一个表的所有信息放入该列。
我试图拆分两个SQL语句并分别运行它们,我尝试了命令的许多不同组合(获取CHAR,在其后添加(32),将全部组合成一条语句,等等),以及我仍然遇到问题。
from google.cloud import bigquery
def alter(client, sql_alter, job_config, table_id):
query_job = client.query(sql_alter, job_config=job_config)
query_job.result()
print(f'Query results appended to table {table_id}')
def main():
client = bigquery.Client.from_service_account_json('my_json')
table_id = 'ref.datasetid.tableid'
job_config = bigquery.QueryJobConfig()
sql_alter = """
ALTER TABLE `ref.datasetid.tableid`
ADD COLUMN ip_address CHAR;
INSERT INTO `ref.datasetid.tableid` ip_address
SELECT ip
FROM `ref.datasetid.table2id`;
"""
alter(client, sql_alter, job_config, table_id)
if __name__ == '__main__':
main()
使用此代码,当前错误是“ 400语法错误:[4:9]处意外的额外令牌INSERT”另外,我是否必须连续用ref.datasetid.tableid
引用表,还是可以只写tableid?我在到达那里之前就遇到了错误,所以我仍然不确定。还是一个初学者,因此非常感谢您的帮助!
答案 0 :(得分:0)
BigQuery does not support ALTER TABLE
or other DDL statements,研究一下Modifying table schemas在加载作业期间如何向表中添加数据时如何添加新列的示例。