Mengimpor file CSV

Halaman ini menjelaskan cara mengimpor data dari file CSV yang disimpan di bucket Cloud Storage ke cluster AlloyDB untuk PostgreSQL.

Anda dapat membatalkan impor data ke cluster AlloyDB. Untuk mengetahui informasi selengkapnya, lihat Membatalkan operasi impor.

Sebelum memulai

Sebelum Anda memulai operasi impor:

  • Pastikan database Anda memiliki ruang kosong yang memadai.
  • Operasi impor menggunakan resource database, tetapi tidak mengganggu operasi database normal kecuali jika cluster kurang tersedia.

Peran dan izin yang diperlukan untuk mengimpor ke cluster AlloyDB

Untuk mengimpor data dari Cloud Storage ke AlloyDB, pengguna yang memulai impor harus memiliki salah satu peran berikut:

Selain itu, akun layanan untuk cluster AlloyDB harus memiliki salah satu peran berikut:

  • Peran IAM storage.objectViewer
  • Peran khusus, termasuk izin berikut:
    • storage.objects.get

Untuk mendapatkan bantuan terkait peran IAM, lihat Identity and Access Management.

Mengimpor data dari file CSV ke cluster AlloyDB

  • Database dan tabel yang Anda gunakan untuk mengimpor harus ada di cluster AlloyDB. Untuk mendapatkan bantuan dalam membuat database, lihat Membuat database.
  • File CSV harus memiliki satu baris untuk setiap baris data dan menggunakan kolom yang dipisahkan koma.

Untuk mengimpor data ke cluster AlloyDB menggunakan file CSV, ikuti langkah-langkah berikut:

gcloud

  1. Buat bucket Cloud Storage.
  2. Upload file CSV ke bucket Anda. Untuk mendapatkan bantuan dalam mengupload file ke bucket, lihat Mengupload objek.
  3. Gunakan gcloud storage buckets add-iam-policy-binding untuk memberikan storage.objectViewer peran IAM ke akun layanan AlloyDB untuk bucket.

     service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM.

  4. Impor file:

    gcloud alloydb clusters import CLUSTER_NAME --region=REGION --gcs-uri=gs://BUCKET_NAME/FILE_NAME --database=DATABASE_NAME --user=USER --csv --table=TABLE_NAME

    Lakukan penggantian berikut:

    • CLUSTER_NAME: nama cluster.
    • REGION: region tempat cluster AlloyDB di-deploy.
    • BUCKET_NAME: nama bucket Cloud Storage.
    • FILE_NAME: nama file CSV.
    • DATABASE_NAME: nama database di dalam cluster.
    • USER: pengguna untuk operasi impor.
    • TABLE_NAME: tabel di dalam database.

    Untuk informasi selengkapnya tentang penggunaan perintah import, lihat halaman referensi perintah alloydb import.

  5. Jika Anda tidak perlu mempertahankan izin IAM yang ditetapkan sebelumnya, hapus izin tersebut menggunakan gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Buat bucket Cloud Storage.
  2. Upload file CSV ke bucket Anda. Untuk mendapatkan bantuan dalam mengupload file ke bucket, lihat Mengupload objek.
  3. Berikan izin akun layanan ke bucket Cloud Storage untuk operasi impor. Gunakan format akun layanan untuk mengidentifikasi akun layanan untuk project tempat Anda mengimpor. Format untuk akun layanan adalah sebagai berikut:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
  4. Gunakan gcloud storage buckets add-iam-policy-binding untuk memberikan storage.objectViewer peran IAM ke akun layanan cluster AlloyDB untuk bucket. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM.

  5. Impor file.

    Gunakan metode HTTP dan URL berikut:

    POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:import

    Sebelum menggunakan data permintaan apa pun, buat penggantian berikut:

    • PROJECT_ID: project ID.
    • LOCATION_ID: region tempat cluster AlloyDB di-deploy.
    • CLUSTER_ID: ID cluster.
    • BUCKET_NAME: nama bucket Cloud Storage.
    • PATH_TO_CSV_FILE: jalur ke file CSV.
    • USER: pengguna untuk operasi impor.
    • DATABASE_NAME: nama database di dalam cluster AlloyDB.
    • TABLE_NAME: tabel di dalam database.
    • COLUMNS (Opsional): kolom yang akan diimpor.
    • ESCAPE_CHARACTER (Opsional): karakter yang harus muncul sebelum karakter data yang perlu di-escape. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, 22 mewakili tanda kutip ganda.
    • QUOTE_CHARACTER (Opsional): karakter yang mengapit nilai dari kolom yang memiliki jenis data string. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, 22 mewakili tanda kutip ganda.
    • FIELD_DELIMITER (Opsional): karakter yang memisahkan nilai kolom. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, 2C mewakili koma.

    Meminta isi JSON:

    {
      "gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE",
      "database": "DATABASE_NAME",
      "user": "USER",
      "csvImportOptions": {
        "table": "TABLE_NAME",
        "columns": ["COLUMN1", "COLUMN2"],
        "fieldDelimiter": "FIELD_DELIMITER",
        "quoteCharacter": "QUOTE_CHARACTER",
        "escapeCharacter": "ESCAPE_CHARACTER"
      }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    curl (Linux, macOS, atau Cloud Shell)

    Simpan isi permintaan dalam file bernama request.json dan jalankan perintah berikut:

       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/LOCATION_ID/clusters/CLUSTER_ID:import"
    

    PowerShell (Windows)

    Simpan isi permintaan dalam file bernama request.json dan jalankan perintah berikut:

    $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/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Content
    

    Anda akan menerima respons JSON yang mirip dengan berikut ini:

    Respons

    {
     "name": "projects/PROJECT_ID/locations/LOCATION_ID/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/location-id/clusters/target-cluster",
      "verb": "import",
      "requestedCancellation": false,
      "apiVersion": "v1"
     },
     "done": false
    }
    
  6. Jika Anda tidak perlu mempertahankan izin IAM yang ditetapkan sebelumnya, hapus sekarang.

    Untuk mengetahui daftar lengkap parameter permintaan, lihat clusters:import.

Menyesuaikan format CSV dan mengimpor file

Anda dapat menyesuaikan format CSV dan mengimpor file jika file CSV berisi pemisah kolom non-default, atau karakter tanda petik atau escape. Untuk mengimpor file CSV dengan format non-default, Anda harus memberikan opsi format yang sama dalam permintaan.

Gunakan contoh gcloud CLI dan REST API berikut untuk membantu Anda menyesuaikan format file CSV.

gcloud

gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_CSV_FILE' --user=USERNAME --table=TABLE_NAME --columns=COLUMNS --field-delimiter='2C' --quote-character='22' --escape-character='5C' --csv

REST v1

Isi permintaan REST API yang setara terlihat mirip dengan berikut ini:

{
 "gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE",
 "database": "DATABASE_NAME",
 "user": "USER",
 "csvImportOptions": {
     "table": "TABLE_NAME",
     "columns": ["COLUMN1", "COLUMN2"],
     "escapeCharacter": "5C",
     "quoteCharacter": "22",
     "fieldDelimiter": "2C",
 }
}

Untuk melihat cara permintaan REST API yang mendasarinya dibuat untuk tugas ini, lihat APIs Explorer di halaman clusters:import.

Jika Anda mendapatkan error seperti INVALID_ARGUMENT, pastikan tabel tersebut ada. Jika tabel tersebut ada, konfirmasi bahwa Anda memiliki izin yang benar pada bucket. Untuk mendapatkan bantuan dalam mengonfigurasi kontrol akses di Cloud Storage, lihat Membuat dan Mengelola Daftar Kontrol Akses.

Memeriksa status operasi impor

Untuk memeriksa status operasi impor, ikuti langkah-langkah berikut:

gcloud

Jalankan perintah berikut menggunakan perintah gcloud alloydb operations describe:

gcloud alloydb operations describe OPERATION_ID --region=REGION

Status operasi ini terlihat dalam kolom STATUS.

Anda juga dapat mencantumkan detail operasi tertentu atau membatalkan operasi tertentu. Untuk informasi selengkapnya tentang perintah ini, lihat halaman referensi perintah gcloud alloydb operations.

REST v1

Gunakan metode GET dan URL berikut:

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

Untuk informasi selengkapnya, lihat get.

Sebelum menggunakan data permintaan apa pun, buat penggantian berikut:

  • REGION: region tempat cluster AlloyDB di-deploy.
  • PROJECT_ID: project ID.
  • OPERATION_ID: ID operasi impor. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai.

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

curl (Linux, macOS, atau Cloud Shell)

Jalankan perintah berikut:

  curl -X GET \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
 

PowerShell (Windows)

Jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID | Select-Object -Expand Content

Anda akan menerima respons JSON yang mirip dengan berikut ini:

Jika berhasil, isi respons akan berisi instance Operation.

Langkah berikutnya