Google Cloud Python Client https://github.com/GoogleCloudPlatform/gcloud-python
Es ist erforderlich, ein GCP-Dienstkonto einzurichten und json zur Authentifizierung im Voraus zu erhalten.
Für Details suchen Sie einfach nach "GCP-Dienstkonto" usw.
Es sollte in einem Schuss mit Pip kommen.
pip install gcloud
Code
Speichern Sie Folgendes und führen Sie es mit python -u upload.py
aus. Tabulatortrennzeichen, die erste Zeile ist die Kopfzeile. Wenn bereits eine Tabelle mit demselben Namen vorhanden ist, wird sie als gelöscht festgelegt. Ändern Sie sie daher entsprechend.
upload.py
from gcloud import bigquery
from gcloud.bigquery import SchemaField
json_key = '/my-folder/my-project-xxxxxxxxxxxx.json'
project_name = 'my-project-1234'
dataset_name = 'my-dataset'
def run():
schema = [
SchemaField('Col1', 'INTEGER', mode='required'),
SchemaField('Col2', 'BOOLEAN', mode='required'),
SchemaField('Col3', 'STRING', mode='nullable'),
SchemaField('Col3', 'FLOAT', mode='nullable'),
]
input_file_path = '/my-folder/input.txt'
header_rows_to_skip = 1
table_name = 'MyTable'
csv_delimiter = '\t'
delete_existing_table = True
upload_one_csv_to_bq(input_file_path, csv_delimiter, header_rows_to_skip, table_name, schema, delete_existing_table)
def upload_one_csv_to_bq(local_csv_file_path, delimiter, header_rows_to_skip,
table_name, table_schema, delete_existing_table):
client = bigquery.Client.from_service_account_json(json_key, project=project_name)
dataset = client.dataset(dataset_name)
table = dataset.table(name=table_name)
if delete_existing_table:
if table.exists():
print 'Delete existing table: ' + table_name
table.delete()
table.schema = table_schema
table.create()
with open(local_csv_file_path, 'rb') as file_obj:
table.upload_from_file(file_obj, 'CSV', field_delimiter=delimiter, skip_leading_rows=header_rows_to_skip, ignore_unknown_values=False)
print 'Done'
###########
# Entry Point
###########
if __name__ == "__main__":
run()
Es funktionierte mit Python 2.7.10 unter Amazon Linux 2016.03 und Python 2.7.11 in meinen Fenstern. Sie können mit UTF-8 arbeiten, auch wenn die Daten Japanisch enthalten.
Zuerst habe ich es getan, während ich mir das Folgende angesehen habe, das entsprechend herausgekommen ist (Einfügen von Daten (synchron)), aber es funktioniert unter Windows, aber wenn ich es zu EC2 bringe, ist es "table.insert_data (rows) # API request" Es liegt ein unangenehmer Fehler wie "Rohrbruch" vor.
https://googlecloudplatform.github.io/gcloud-python/stable/bigquery-usage.html
Also in Form von table.upload_from_file
nach verschiedenen Umwegen. Wenn Sie ein Problem haben, empfehle ich, den Code aufzugeben und zu lesen
https://github.com/GoogleCloudPlatform/gcloud-python/tree/master/gcloud/bigquery
Recommended Posts