Python 如何使用gsutil将查询写入表?

Python 如何使用gsutil将查询写入表?,python,pandas,google-bigquery,gsutil,Python,Pandas,Google Bigquery,Gsutil,我目前正在使用python和pandas构建一个查询,将结果转换为pandasdataframe,然后将该dataframe写回一个表。要跳过下载和上传步骤,我想我应该使用gsutil执行一个查询,并指示它将结果写入表中 我使用的查询是: SELECT id, weight, net_weight FROM `body_table-1345.bodies.weights WHERE birthdate >= '2017-01-01 00:00:00' 我想把结果写到名为body\u ta

我目前正在使用python和pandas构建一个查询,将结果转换为pandas
dataframe
,然后将该
dataframe
写回一个表。要跳过下载和上传步骤,我想我应该使用
gsutil
执行一个查询,并指示它将结果写入表中

我使用的查询是:

SELECT id, weight, net_weight
FROM `body_table-1345.bodies.weights
WHERE birthdate >= '2017-01-01 00:00:00'
我想把结果写到名为
body\u table-1345.body.qualified的表中

我当前的代码使用了
pandas.DataFrame.read_gbq
pandas.DataFrame.to_gbq
,但这需要花费很长时间,我认为这样做是错误的。一旦我在命令行中执行了正确的东西(使用
gsutil
),我将把它包装在
python
代码中,并使用
os.system
执行它


如何告诉
gsutil
自动检测模式并将结果发送到表中?

我建议使用官方命令,而不是使用Python作为
os
命令的包装器。您可以非常轻松地执行所有这些步骤,例如:

import google.cloud.bigquery as bq
client = bq.Client.from_service_account_json('path/to/credentials.json')

table = client.dataset("bodies").table("eligible")

query_config = bq.QueryJobConfig()
query_config.destination = table
query = """
    SELECT id, weight, net_weight
    FROM `body_table-1345.bodies.weights
    WHERE birthdate >= '2017-01-01 00:00:00'
    """
job = client.query(query, job_config=query_config)

您将在其他几个示例中找到如何使用API执行这些类型的操作。

而不是使用Python作为
os
命令的包装器,我建议您使用官方API。您可以非常轻松地执行所有这些步骤,例如:

import google.cloud.bigquery as bq
client = bq.Client.from_service_account_json('path/to/credentials.json')

table = client.dataset("bodies").table("eligible")

query_config = bq.QueryJobConfig()
query_config.destination = table
query = """
    SELECT id, weight, net_weight
    FROM `body_table-1345.bodies.weights
    WHERE birthdate >= '2017-01-01 00:00:00'
    """
job = client.query(query, job_config=query_config)

您可以在其他几个示例中找到如何使用API执行这些类型的操作。

我建议使用Willian Fuks解决方案,而且,为了清楚起见,
gsutil
用于GCS,而用于BigQuery
bq
则使用()。我建议使用Willian Fuks解决方案,并且,为了清楚起见,
gsutil
用于地面军事系统,BigQuery使用
bq
)。