Ich versuche mit Google Apps Script Daten mithilfe der BigQuery-API in eine BigQuery-Tabelle einzufügen. Die anzuhängenden Daten sind derzeit im CSV-Format. Bisher habe ich festgestellt, dass Sie stream data into BigQuery mit tabledata().insertAll()
verwenden können, aber es sieht so aus, dass erfordert JSON-Format und ich bin nicht einmal davon überzeugt, dass es tun würde, was ich brauche. Gibt es eine einfache Lösung, die ich vermisse? Da ich weiß, dass BigQuery das Anhängen unterstützt, konzentriert sich alles, was ich finde, auf das Laden von Daten in neue Tabellen.Kann ich Daten aus einer CSV-Datei mithilfe der API an eine vorhandene BigQuery-Tabelle anhängen?
EDIT: Klingt wie tabledata().insertAll()
in der Tat die richtige Methode zu verwenden ist (hoffentlich). Also konvertierte ich meine Datei stattdessen in json, aber jetzt bin ich fest, wie ich sie benutzen soll. Ich versuche das, was ich mache, von der reference page for it abzustützen, aber es ist immer noch sehr verwirrend für mich. Zur Zeit bekomme ich einen 404
Fehler, wenn ich meinen Code starte und es den fetch
Aufruf trifft. Ich versuche einen URL-Abruf durchzuführen, vielleicht sollte ich das nicht tun? Ich bin wirklich neu in APIs und ich finde immer noch heraus, wie sie funktionieren. Hier ist der Code Ich habe derzeit das ist diese verursacht:
var tableId = 'users';
var file = DriveApp.getFileById(jsonId);
//I don't know if a blob is the type that I want or not, but I'm trying it
var data = file.getBlob();
var url = 'https://www.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/tableId/insertAll'
.replace("PROJECT_ID", params.PROJECT_ID)
.replace("DATASET_ID", params.DATASET_ID)
.replace("tableId", tableId);
var response = UrlFetchApp.fetch(url, {
"kind": "bigquery#tableDataInsertAllRequest",
"skipInvalidRows": 0,
"ignoreUnknownValues": 0,
"rows": [
{
"json": data
}
],
headers: {
Authorization: 'Bearer ' + service.getAccessToken()
}
});
var result = JSON.parse(response.getContentText());
Logger.log(JSON.stringify(result, null, 2));
Sie haben bereits die Methode identifiziert, die Daten in das richtige Format zu erhalten ist nur eine Frage der CSV-Parsing und es in JSON kodiert, welchem Schritt Hast du Probleme damit? Was hast du schon versucht –
Also ist die 'insertAll()' Methode in der Tat die, die ich will? Mein Problem ist dann, einen vernünftigen Weg zu finden, die CSV-Datei in json zu konvertieren (idealerweise mit Google Apps Script), denke ich. Plus herauszufinden, wie der Funktionsaufruf funktioniert. Ich war nur sehr skeptisch, dass dies die richtige Methode war, nach der ich suchte. –
OK Ich denke ich habe meine Daten jetzt im JSON-Format (hoffentlich richtig). Von hier aus habe ich Schwierigkeiten, tatsächlich den Aufruf der API zu machen. Ich kann meine Frage jetzt mit weiteren Details aktualisieren. –