【发布时间】:2017-12-09 22:10:18
【问题描述】:
这是我的代码,它从 firebase 提取实时数据库,将其格式化为 Json,上传到云端,然后上传到 BQ。
#standardsql
import json
import boto
import gcs_oauth2_boto_plugin
import os
import shutil
import StringIO
import tempfile
import time
import argparse
import uuid
from firebase import firebase
from google.cloud import storage
from google.cloud.storage import blob
from google.cloud import bigquery
firebase = firebase.FirebaseApplication('https://dataworks-356fa.firebaseio.com/')
result = firebase.get('/connection_info', None)
id_keys = map(str, result.keys())
with open("firetobq.json", "w") as outfile:
for id in id_keys:
json.dump(result[id], outfile, indent=None)
outfile.write("\n")
client = storage.Client(project='dataworks-356fa')
bucket = client.get_bucket('dataworks-356fa-backups')
blob = bucket.blob('firetobq.json')
with open('firetobq.json', 'rb') as f:
blob.upload_from_file(f)
dataset = 'dataworks-356fa'
source = 'gs://dataworks-356fa-backups/firetobq.json'
def load_data_from_gcs(dataset, test12, source):
bigquery_client = bigquery.Client(dataset)
dataset = bigquery_client.dataset('FirebaseArchive')
table = dataset.table('test12')
job_name = str(uuid.uuid4())
job1.create_disposition = 'WRITE_TRUNCATE'
job1.begin()
job= bigquery_client.load_table_from_storage(
job_name, table, "gs://dataworks-356fa-backups/firetobq.json")
job.source_format = 'NEWLINE_DELIMITED_JSON'
job.begin()
wait_for_job(job)
def wait_for_job(job):
while True:
job.reload()
if job.state == 'DONE':
if job.error_result:
raise RuntimeError(job.errors)
return
time.sleep(1)
load_data_from_gcs(dataset, 'test12', source)
如何将其更改为,而不是导入表 test12 中的数据来创建新表并让该表在 1 周后过期。 (我很确定设置到期日期的命令必须以秒为单位。1 周 = 604800 秒)我知道如何通过命令行设置到期日期,但宁愿在这里自动完成。
这是我在添加 job1 后收到的错误。
Traceback (most recent call last):
File "firebasetobq2.py", line 63, in <module>
load_data_from_gcs(dataset, 'test12', source)
File "firebasetobq2.py", line 44, in load_data_from_gcs
job1.create_disposition = 'WRITE_TRUNCATE'
NameError: global name 'job1' is not defined
【问题讨论】:
-
您使用
google-bigquery标签发布了许多其他问题,但没有接受或回复您收到的答案。请看stackoverflow.com/help/someone-answers -
他们现在都回答或投票了,请帮助我。
-
我目前没有可以使用的 Python 环境来编写正确的答案。您要查找的方法是
update或patch;见googlecloudplatform.github.io/google-cloud-python/stable/…
标签: python google-bigquery create-table