BigQuery exportieren der Daten in CSV ohne Verwendung von Google Cloud Storage
Ich bin derzeit am schreiben einer software zu exportieren große Mengen von BigQuery-Daten und speichern der abgefragten Ergebnisse lokal als CSV-Dateien. Früher habe ich Python 3 und den client von google. Ich habe die Konfiguration und Authentifizierung, aber das problem ist, dass ich kann nicht speichern Sie die Daten lokal. Jedesmal, wenn ich ausführen, bekomme ich folgende Fehlermeldung:
googleapiclient.Fehler.HttpError: https://www.googleapis.com/bigquery/v2/projects/round-office-769/jobs?alt=json zurückgegeben "Ungültige Ziel-URI extrahieren 'Antwort/Datei-name-*.csv'. Muss ein gültiges Google-Speicher-Pfad.">
Das ist mein Job-Konfiguration:
def export_table(service, cloud_storage_path,
projectId, datasetId, tableId, sqlQuery,
export_format="CSV",
num_retries=5):
# Generate a unique job_id so retries
# don't accidentally duplicate export
job_data = {
'jobReference': {
'projectId': projectId,
'jobId': str(uuid.uuid4())
},
'configuration': {
'extract': {
'sourceTable': {
'projectId': projectId,
'datasetId': datasetId,
'tableId': tableId,
},
'destinationUris': ['response/file-name-*.csv'],
'destinationFormat': export_format
},
'query': {
'query': sqlQuery,
}
}
}
return service.jobs().insert(
projectId=projectId,
body=job_data).execute(num_retries=num_retries)
Ich hoffte, ich könnte einfach einen lokalen Pfad statt einem cloud-Speicher, um Daten zu speichern, aber ich war falsch.
Also meine Frage ist:
Kann ich laden Sie die abgefragten Daten lokal(oder auf eine lokale Datenbank) oder muss ich für die Nutzung von Google Cloud Storage?
- keine nicht-cloud-Speicher-version stackoverflow.com/questions/18493533/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Verwendung von Google Cloud Storage für Ihr export-job. Exportieren von Daten aus BigQuery erklärt hier, überprüfen Sie auch die Varianten für die verschiedenen Pfad-Syntaxen.
Dann können Sie die Dateien herunterzuladen, die von GCS zu Ihrem lokalen Speicher.
Gsutil - tool hilft Ihnen weiter, um die Datei herunterzuladen von GCS auf der lokalen Maschine.
Können Sie Sie herunterladen mit einem lokal bewegen, müssen Sie zuerst einen export zu GCS, als zur übertragung zu lokalen Maschine.
Können Sie alle Daten direkt (ohne routing durch Google Cloud Storage) mit der paging-Mechanismus. Im Grunde benötigen Sie zum generieren einer page-token für jede Seite, download der Daten in die Seite und wiederholen Sie dies, bis alle Daten heruntergeladen wurden, d.h. keine weitere tokens verfügbar sind. Hier ist ein Beispiel code in Java, die hoffentlich verdeutlicht die Idee:
Können Sie ein tabledata.list () - operation auf der Tabelle, und legen Sie "alt=csv", die zurückkehren wird der Anfang der Tabelle als CSV-Datei.
Einen anderen Weg, dies zu tun ist von der Benutzeroberfläche, nachdem die Ergebnisse der Abfrage zurückgegeben haben, können Sie die Option "Download as CSV" - Taste.
Wenn Sie installieren Sie Google BigQuery API und pandas und pandas.io, die Sie ausführen können, Python innerhalb eines Jupyter Notizbuch, die Abfrage der BQ-Tabelle und die Daten in eine lokale dataframe. Von dort aus können Sie es schreiben in CSV.