Auf dieser Seite wird beschrieben, wie Sie Daten aus AlloyDB for PostgreSQL-Clustern im CSV-Format in einen Cloud Storage-Bucket exportieren, sodass sie von anderen Tools und Umgebungen verwendet werden können.
Informationen zum Migrieren einer gesamten Datenbank von einem unterstützten Datenbank server zu einer neuen AlloyDB-Instanz finden Sie unter Datenbank mit dem Database Migration Service zu AlloyDB migrieren. Wenn Sie aus der exportierten Datei eine neue Instanz erstellen möchten, können Sie stattdessen auch einen Cluster aus einer gespeicherten Sicherung wiederherstellen.
Sie können den Export von Daten aus AlloyDB for PostgreSQL-Clustern abbrechen. Weitere Informationen finden Sie unter Export von Daten abbrechen.
Hinweis
- Exportvorgänge verwenden Datenbankressourcen, stören den normalen Datenbankbetrieb jedoch nicht, wenn die Instanz nicht unterdimensioniert ist.
SELECT_QUERYkann Kommentare oder führende und nachfolgende Leerzeichen enthalten. Kommentare werden ignoriert und Leerzeichen werden entfernt, bevor die Exportabfrage ausgeführt wird.- Es fallen Gebühren für die interregionale Datenübertragung an, wenn sich der Ziel-Bucket in einer anderen Region als der Quellcluster befindet. Weitere Informationen finden Sie unter AlloyDB for PostgreSQL – Preise.
- Mehrere Exportvorgänge können parallel ausgeführt werden.
- Die Komprimierung ist aktiviert, wenn der Objektname auf die Erweiterung
.gzendet. Das Objekt wird dann im.gz-Format in Cloud Storage exportiert. - Für Zeichenwerte in CSV-Optionen wie
field_delimiter,quote_characterundescape_charactersind nur ASCII-Zeichen im Hexadezimalcode (mit oder ohne das Präfix0x) zulässig.
Erforderliche Rollen und Berechtigungen für Exporte aus AlloyDB
Damit Daten aus AlloyDB in Cloud Storage exportiert werden können, muss der Nutzer, der den Export initiiert, eine der folgenden Identity and Access Management-Rollen (IAM) haben:
- Die Rolle „
Cloud AlloyDB-Administrator
“ (
roles/alloydb.admin) - Eine
benutzerdefinierte Rolle,
mit den folgenden Berechtigungen:
alloydb.clusters.getalloydb.clusters.export
Darüber hinaus muss das Dienstkonto für den AlloyDB-Cluster eine der folgenden Rollen haben:
- Die IAM-Rolle
storage.objectAdmin - Eine benutzerdefinierte Rolle mit den folgenden Berechtigungen:
storage.objects.create
Weitere Informationen zu IAM-Rollen finden Sie unter Identity and Access Management.
Daten in eine CSV-Datei exportieren
Während eines CSV-Exports können Sie die zu exportierenden Schemas angeben. Alle Schemas auf Datenbankebene können exportiert werden.
Zum Anpassen des CSV-Dateiformats können Sie die gcloud CLI oder die REST API verwenden.
gcloud
- Erstellen Sie einen Cloud Storage-Bucket.
Gewähren Sie dem Dienstkonto Berechtigungen für den Cloud Storage-Bucket für den Exportvorgang. Verwenden Sie das Dienstkontoformat, um das Dienstkonto für das Projekt zu identifizieren, aus dem Sie exportieren. Das Format für das Dienstkonto ist wie folgt:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comWeisen Sie mit
gcloud storage buckets add-iam-policy-bindingdem Dienstkonto diestorage.objectAdminIAM-Rolle zu. Weitere Informationen zum Festlegen von IAM Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.Exportieren Sie die Datenbank in Ihren Cloud Storage-Bucket.
Führen Sie den Befehl zum Exportieren von CSV-Dateien aus:
gcloud alloydb clusters export.In der folgenden Tabelle sind die Optionen für den Export von Daten im CSV-Format aufgeführt:
--select-query(erforderlich): Die SELECT-Abfrage, mit der die Daten extrahiert werden.
--async(optional): wird sofort zurückgegeben, ohne auf den Abschluss des Vorgangs zu warten.--field-delimiter(optional): gibt das Zeichen an, das die Spalten in jeder Zeile der Datei trennt. Der Standardwert ist ein Komma. Der Wert dieses Arguments muss ein Zeichen im Hex-ASCII-Code sein.--quote-character(optional): gibt das Anführungszeichen an, das verwendet werden soll, wenn ein Datenwert in Anführungszeichen gesetzt wird. Der Standardwert ist ein doppeltes Anführungszeichen. Der Wert dieses Arguments muss ein Zeichen im Hex-ASCII-Code sein.--escape-character(optional): gibt das Zeichen an, das vor einem Datenzeichen stehen muss, das maskiert werden soll. Der Standardwert ist derselbe wie--quote-character. Der Wert dieses Arguments muss ein Zeichen im Hex-ASCII-Code sein.
Wenn Sie diese Funktionen verwenden möchten, fügen Sie diese Optionen in den gcloud CLI-Befehl ein.
Andernfalls entfernen Sie diese Parameter aus dem folgenden Befehl:
gcloud alloydb clusters export CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri="gs://BUCKET_NAME/OBJECT_NAME" --select-query=SELECT_QUERY --field-delimiter=FIELD_DELIMITER --quote-character=QUOTE_CHARACTER --escape-character=ESCAPE_CHARACTER --csvWenn Sie die zuvor festgelegte IAM-Rolle nicht beibehalten möchten, widerrufen Sie sie jetzt.
REST Version 1
Erstellen Sie einen Bucket für den Export:
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME>Verwenden Sie das Dienstkontoformat, um das Dienstkonto für das Projekt zu identifizieren, aus dem Sie exportieren.
Das Format für das Dienstkonto ist wie folgt:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comDiesem müssen Berechtigungen für den Cloud Storage-Bucket für den Exportvorgang gewährt werden.
Weisen Sie mit gcloud storage buckets add-iam-policy-binding dem Dienstkonto die
storage.objectAdminIAM-Rolle zu. Weitere Informationen zum Festlegen von IAM Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.Exportieren Sie Ihre Datenbank.
Verwenden Sie die folgende HTTP-Methode und URL:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:exportErsetzen Sie folgende Werte in den Anfragedaten:
- PROJECT_ID: Projekt-ID.
- REGION: Die Region, in der der AlloyDB-Cluster bereitgestellt wird.
- CLUSTER_ID: Cluster-ID.
- BUCKET_NAME: Name des Cloud Storage Buckets.
- PATH_TO_CSV_FILE: Pfad zur CSV-Datei.
- DATABASE_NAME: Name einer Datenbank im AlloyDB-Cluster.
SELECT_QUERY: Die SQL-Abfrage für den Export.
ESCAPE_CHARACTER (optional): Das Zeichen, das vor einem Datenzeichen stehen muss, das maskiert werden soll. Der Wert dieses Arguments muss ein Zeichen im Hex-ASCII-Code sein. Beispiel:
22steht für ein doppeltes Anführungszeichen.QUOTE_CHARACTER (optional): Das Zeichen , das Werte aus Spalten mit dem Datentyp „String“ umschließt. Der Wert dieses Arguments muss ein Zeichen im Hex-ASCII-Code sein. Beispiel:
22steht für ein doppeltes Anführungszeichen.FIELD_DELIMITER (optional): Das Zeichen das die Spaltenwerte aufteilt. Der Wert dieses Arguments muss ein Zeichen im Hex-ASCII-Code sein. Beispiel:
2Csteht für ein Komma.
JSON-Text der Anfrage:
{ "gcs_destination": { "uri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE" }, "database": "DATABASE_NAME", "csv_export_options": { "select_query": "SELECT_QUERY", "escape_character": "ESCAPE_CHARACTER", "quote_character": "QUOTE_CHARACTER", "field_delimiter": "FIELD_DELIMITER" } }Verwenden Sie eine der folgenden Optionen, um Ihre Anfrage zu senden:
curl (Linux, macOS oder Cloud Shell)
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"
PowerShell (Windows)
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"| Select-Object -Expand Content
Sie erhalten eine JSON-Antwort ähnlich der folgenden:
Antwort
{
"name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
"createTime": "2024-09-17T06:05:31.244428646Z",
"target": "projects/PROJECT_ID/locations/REGION/clusters/TARGET_CLUSTER",
"verb": "export",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
Wenn Sie die zuvor festgelegten IAM-Berechtigungen nicht beibehalten möchten, entfernen Sie diese jetzt.
Die vollständige Liste der Parameter für die Anfrage finden Sie unter
clusters:export.
Format einer CSV-Exportdatei anpassen
Zum Anpassen des CSV-Dateiformats können Sie die gcloud CLI oder die REST API verwenden. Beim Export können Sie die folgenden Formatierungsoptionen angeben:
CSV-Option |
Standardwert |
gcloud-Flag |
REST API-Property |
Beschreibung |
|---|---|---|---|---|
Escape |
Der Standardwert ist derselbe wie der Wert von QUOTE. |
--escape-character
|
escape_character |
Zeichen, das vor einem Datenzeichen stehen muss, das maskiert werden soll. |
Zitat |
"22"ASCII-Hexadezimalcode für ein doppeltes Anführungszeichen. |
--quote-character
|
quote_character |
Gibt das Anführungszeichen an, das verwendet werden soll, wenn ein Datenwert in Anführungszeichen gesetzt wird. |
| Feldtrennzeichen | "2C"ASCII-Hexadezimalcode für Komma. |
--field-delimiter |
field_delimiter |
Zeichen, das die Spaltenwerte aufteilt. |
Ein gcloud CLI-Befehl mit all diesen Argumenten kann beispielsweise so aussehen:
gcloud alloydb clusters export CLUSTER_NAME \
--region=REGION \
--database=DATABASE_NAME \
--gcs-uri='gs://BUCKET_NAME/PATH_TO_CSV_FILE' \
--select-query=SELECT_QUERY \
--field-delimiter='2C' \
--quote-character='22' \
--escape-character='5C'
--csvDer entsprechende REST API-Anfragetext sieht etwa so aus:
{
"exportContext":
{
"gcs_destination": {
"uri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE",
},
"database": "DATABASE_NAME",
"csv_export_options":
{
"select_query": "SELECT_QUERY",
"escape_character": "5C",
"quote_character": "22",
"field_delimiter": "2C",
}
}
}
Standardmäßig wird beim CSV-Export eine Standard-CSV-Ausgabe erstellt. Wenn Sie mehr
Optionen als die von AlloyDB bereitgestellten benötigen, können Sie die
folgende Anweisung in einem psql Client verwenden:
\copy `TABLE_NAME` TO `CSV_FILE_NAME.csv' WITH
(FORMAT csv, ESCAPE 'ESCAPE_CHARACTER', QUOTE 'QUOTE_CHARACTER',
DELIMITER 'DELIMITER_CHARACTER', ENCODING 'UTF8', NULL 'NULL_MARKER_STRING');
Nächste Schritte
- Erfahren Sie, wie Sie eine SQL-Dumpdatei exportieren.
- Exportvorgang abbrechen.