Während unser Projekt wächst, haben wir irgendwann erkannt, dass wir neue Projekte erstellen und unseren Datensatz neu organisieren müssen. Ein Fall ist, dass wir einen Datensatz von anderen in ein anderes neues Projekt isolieren müssen. Ich weiß, dass ich es tun kann, indem ich Tabellen nacheinander über API kopiere und dann die alten lösche. Aber wenn es um mehr als tausend Tabellen geht, verbraucht es wirklich viel Zeit, da die Kopier-API als Job ausgeführt wird und Zeit braucht. Ist es möglich, nur die Referenz (oder den Pfad) eines Datensatzes zu ändern?
Nachverfolgung Ich habe versucht, Tabellen mit Batch-Anfrage zu kopieren. Ich habe 200 OK in allen Anfragen, aber die Tabellen wurden einfach nicht kopiert. Ich frage mich, warum und wie man das wirkliche Ergebnis bekommt. Hier ist mein Code:
%Vor%Nein, derzeit gibt es in BigQuery keine Operation zum Verschieben oder Umbenennen. Die beste Methode zum Verschieben Ihrer Daten besteht darin, sie zu kopieren und das Original zu löschen.
Folgeantwort : Ihre Stapelanforderung hat die Kopieraufträge erstellt, Sie müssen jedoch darauf warten, dass sie abgeschlossen werden, und dann das Ergebnis beobachten. Sie können die BigQuery-Webbenutzeroberfläche verwenden oder "bq ls -j" über die Befehlszeile ausführen, um die letzten Jobs anzuzeigen.
Es gibt keine integrierte Funktion, aber ich habe dazu beigetragen, ein Tool zu schreiben, das wir für Sie geöffnet haben: Ссылка .
Damit können Sie Tabellen zwischen Projekten oder Datasets (innerhalb desselben Projekts) synchronisieren / kopieren. Die meisten Details finden Sie in der README , aber zur Veranschaulichung sieht es ein wenig wie folgt aus:
%Vor%Sie können Optionen festlegen, die steuern, wie viele Tabellen kopiert werden, wie viele Jobs gleichzeitig ausgeführt werden und wo die Zwischendaten in Cloud Storage gespeichert werden. Das Ziel-Dataset muss bereits vorhanden sein, aber das bedeutet, dass Sie Daten auch zwischen Standorten (USA, EU, Asien usw.) kopieren können.
Binärdateien werden auf CircleCI erstellt und auf GitHub veröffentlicht .
Ein kurzes Shell-Skript, das alle Tabellen von einem Datensatz in einen anderen Datensatz kopiert:
%Vor%Tags und Links google-bigquery