使用Python将现有BQ表中的列添加到另一个BQ表中

2024-04-25 08:20:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从现有的BQ表创建新表,所有这些都在python中。到目前为止,我已经使用一些类似的代码成功地创建了该表,但是现在我想从另一个表中添加另一列到该表中—我还没有成功地使用该表。我认为问题出在我的SQL代码中。你知道吗

基本上,我想在这里添加另一个名为“ip\u 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]处意外的额外令牌插入”。另外,我是否必须用ref.datasetid.tableid连续引用我的表,或者我可以只写tableid?我在它到达之前就遇到了错误,所以我还是不确定。仍然是一个初学者,所以帮助是非常感谢!你知道吗


Tags: 代码ipclientrefidconfigsqladdress