Halaman ini menjelaskan cara mengekspor dan mengimpor data ke instance Cloud SQL menggunakan file CSV.
Sebelum memulai
Sebelum Anda memulai operasi ekspor atau impor:
- Pastikan database Anda memiliki ruang kosong yang memadai.
- Verifikasi bahwa file CSV memiliki data yang diharapkan dan memiliki format yang benar. File CSV harus memiliki satu baris untuk setiap baris kolom data.
- Ikuti praktik terbaik untuk mengekspor dan mengimpor data.
Operasi ekspor dan impor menggunakan resource database, tetapi tidak mengganggu operasi database normal kecuali jika penyediaan instance kurang lengkap.
Mengekspor data dari Cloud SQL untuk PostgreSQL
Peran dan izin yang diperlukan untuk mengekspor dari Cloud SQL untuk PostgreSQL
Untuk mengekspor data dari Cloud SQL ke Cloud Storage, pengguna yang memulai ekspor harus memiliki salah satu peran berikut:
- Peran Cloud SQL Editor
- Peran khusus,
yang mencakup izin berikut:
cloudsql.instances.get
cloudsql.instances.export
Selain itu, akun layanan untuk instance Cloud SQL harus memiliki salah satu peran berikut:
- Peran Identity and Access Management (IAM)
storage.objectAdmin
- Peran khusus, termasuk izin berikut:
storage.objects.create
storage.objects.list
(hanya untuk mengekspor file secara paralel)storage.objects.delete
(hanya untuk mengekspor file secara paralel)
Untuk mendapatkan bantuan terkait peran IAM, lihat Identity and Access Management.
Mengekspor data ke file CSV dari Cloud SQL untuk PostgreSQL
Anda dapat mengekspor data dalam format CSV, yang dapat digunakan oleh alat dan lingkungan lainnya. Ekspor terjadi di tingkat database. Selama ekspor CSV berlangsung, Anda dapat menentukan skema yang akan diekspor. Semua skema di tingkat database memenuhi syarat untuk diekspor.
Untuk mengekspor data dari database pada instance Cloud SQL ke file CSV di bucket Cloud Storage:
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Klik Ekspor.
- Pilih Simpan ekspor untuk mengizinkan operasi lain dilakukan saat ekspor sedang berlangsung.
-
Pada bagian Lokasi ekspor Cloud Storage, tambahkan nama bucket,
folder, dan file yang ingin diekspor, atau klik Cari untuk
menemukan atau membuat bucket, folder, atau file.
Jika Anda mengklik Cari:
- Di bagian Lokasi, pilih bucket atau folder Cloud Storage untuk ekspor Anda.
Di kotak Nama, tambahkan nama untuk file
CSV
, atau pilih file yang sudah ada dari daftar di bagian Lokasi.Anda dapat menggunakan ekstensi file
.gz
(ekstensi lengkapnya adalah.csv.gz
) untuk mengompresi file ekspor Anda.- Klik Pilih.
- Di bagian Format, klik CSV.
- Di bagian Database untuk Ekspor, pilih nama database dari menu drop-down.
-
Untuk kueri SQL, masukkan kueri SQL guna menentukan tabel yang datanya akan diekspor.
Misalnya, untuk mengekspor seluruh konten tabel
entries
dalam databaseguestbook
, Anda harus memasukkan Kueri Anda harus menentukan tabel dalam database yang ditentukan. Anda tidak dapat mengekspor seluruh database dalam format CSV.SELECT * FROM guestbook.entries;
- Klik Ekspor untuk memulai ekspor.
- Kotak Ekspor database? akan terbuka dengan pesan bahwa proses ekspor dapat memerlukan waktu satu jam atau lebih untuk database yang besar. Selama proses ekspor, satu-satunya operasi yang dapat Anda lakukan pada instance adalah melihat informasi. Setelah ekspor dimulai, Anda dapat membatalkan operasi. Jika ini adalah saat yang tepat untuk memulai ekspor, klik Ekspor. Jika tidak, klik Batal.
gcloud
- Membuat bucket Cloud Storage.
Upload file ke bucket Anda.
Untuk mendapatkan bantuan dalam mengupload file ke bucket, lihat Mengupload objek.
- Temukan akun layanan untuk instance Cloud SQL tempat Anda melakukan
ekspor. Anda dapat melakukannya dengan menjalankan perintah
gcloud sql instances describe
. Cari kolomserviceAccountEmailAddress
di output.gcloud sql instances describe INSTANCE_NAME
- Gunakan
gcloud storage buckets add-iam-policy-binding
untuk memberikan peran IAMstorage.objectAdmin
ke akun layanan instance Cloud SQL. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM. - Ekspor database:
gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --offload \ --query=SELECT_QUERY
Untuk informasi tentang penggunaan perintah
export csv
, lihat halaman referensi perintahsql export csv
. - Jika Anda tidak perlu mempertahankan peran IAM yang telah ditetapkan sebelumnya, cabut sekarang.
REST v1
- Buat bucket untuk ekspor:
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Langkah ini tidak wajib, tetapi sangat direkomendasikan, agar Anda tidak membuka akses ke data lain.
- Berikan
legacyBucketWriter
pada instance Anda peran IAM untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM. -
Ekspor database Anda:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: ID project
- instance-id: ID instance
- bucket_name: Nama bucket Cloud Storage
- path_to_csv_file: Jalur ke file CSV
- database_name: Nama database di dalam instance Cloud SQL
- offload: Mengaktifkan ekspor serverless. Tetapkan ke
true
untuk menggunakan ekspor serverless. - select_query: Kueri SQL untuk ekspor (opsional)
- escape_character: Karakter yang akan muncul sebelum karakter data yang perlu di-escape. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, "22" mewakili tanda kutip ganda. (opsional)
- quote_character:Karakter yang mencakup nilai dari kolom yang memiliki jenis data string. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, "22" mewakili tanda kutip ganda. (opsional)
- fields_terminated_by: Karakter yang memisahkan nilai kolom. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, "2C" mewakili koma. (opsional)
- lines_terminated_by: Karakter yang memisahkan kumpulan data baris. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, "0A" mewakili baris baru. (opsional)
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
Meminta isi JSON:
{ "exportContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "databases": ["database_name"], "offload": true | false "csvExportOptions": { "selectQuery":"select_query", "escapeCharacter":"escape_character", "quoteCharacter":"quote_character", "fieldsTerminatedBy":"fields_terminated_by", "linesTerminatedBy":"lines_terminated_by" } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
Anda harus menentukan satu database dengan properti
databases
, dan jika kueri pilihan menentukan database, database tersebut harus sama. - Jika Anda tidak perlu mempertahankan izin IAM yang telah ditetapkan sebelumnya, hapus sekarang.
REST v1beta4
- Buat bucket untuk ekspor:
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Langkah ini tidak wajib, tetapi sangat direkomendasikan, agar Anda tidak membuka akses ke data lain.
- Berikan
storage.objectAdmin
pada instance Anda peran IAM untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM. -
Ekspor database Anda:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: ID project
- instance-id: ID instance
- bucket_name: Nama bucket Cloud Storage
- path_to_csv_file: Jalur ke file CSV
- database_name: Nama database di dalam instance Cloud SQL
- offload: Mengaktifkan ekspor serverless. Tetapkan ke
true
untuk menggunakan ekspor serverless. - select_query: Kueri SQL untuk ekspor (opsional)
- escape_character: Karakter yang akan muncul sebelum karakter data yang perlu di-escape. Nilai argumen ini harus dalam format hex ASCII. Misalnya, "22" mewakili tanda kutip ganda. (opsional)
- quote_character: Karakter yang mencakup nilai dari kolom yang memiliki jenis data string. Nilai argumen ini harus dalam format hex ASCII. Misalnya, "22" mewakili tanda kutip ganda. (opsional)
- fields_terminated_by: Karakter yang memisahkan nilai kolom. Nilai argumen ini harus dalam format hex ASCII. Misalnya, "2C" mewakili koma. (opsional)
- lines_terminated_by: Karakter yang memisahkan kumpulan data baris. Nilai argumen ini harus dalam format hex ASCII. Misalnya, "0A" mewakili baris baru. (opsional)
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Meminta isi JSON:
{ "exportContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "databases": ["database_name"], "offload": true | false "csvExportOptions": { "selectQuery": "select_query", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
Anda harus menentukan satu database dengan properti
databases
, dan jika kueri pilihan menentukan database, database tersebut harus sama. - Jika Anda tidak perlu mempertahankan peran IAM yang telah ditetapkan sebelumnya, cabut sekarang.
Menyesuaikan format dari file ekspor CSV
Anda dapat menggunakan gcloud
atau REST API untuk menyesuaikan format file CSV. Saat
melakukan ekspor, Anda dapat menentukan opsi pemformatan berikut:
Opsi CSV | Nilai default | flag gcloud | Properti REST API | Deskripsi |
---|---|---|---|---|
Escape |
Kode hex ASCII untuk pemisah file. |
--escape |
escapeCharacter |
Karakter yang muncul sebelum karakter data yang perlu di-escape. Hanya tersedia untuk MySQL dan PostgreSQL. |
Penawaran harga |
Kode hex ASCII untuk tanda kutip ganda. |
--quote |
quoteCharacter |
Karakter yang mengapit nilai dari kolom yang memiliki tipe data string. Hanya tersedia untuk MySQL dan PostgreSQL. |
Field delimiter |
Kode hex ASCII untuk koma. |
--fields-terminated-by |
fieldsTerminatedBy |
Karakter yang memisahkan nilai kolom. Hanya tersedia untuk MySQL dan PostgreSQL. |
Karakter newline |
Kode hex ASCII untuk newline. |
--lines-terminated-by |
linesTerminatedBy |
Karakter yang memisahkan kumpulan data baris. Hanya tersedia untuk MySQL. |
Misalnya, perintah gcloud
yang menggunakan semua argumen ini bisa menjadi
seperti berikut:
gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --offload \ --query=SELECT_QUERY \ --quote="22" \ --escape="5C" \ --fields-terminated-by="2C" \ --lines-terminated-by="0A"
Isi permintaan REST API yang setara akan terlihat seperti ini:
{ "exportContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "databases": ["DATABASE_NAME"], "offload": true, "csvExportOptions": { "selectQuery": "SELECT_QUERY", "escapeCharacter": "5C", "quoteCharacter": "22", "fieldsTerminatedBy": "2C", "linesTerminatedBy": "0A" } } }
Ekspor CSV membuat output CSV standar secara default. Jika memerlukan lebih banyak opsi dari yang disediakan oleh Cloud SQL, Anda dapat menggunakan pernyataan berikut pada klien psql:
\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]');
Mengimpor data ke Cloud SQL untuk PostgreSQL
Peran dan izin yang diperlukan untuk mengimpor ke Cloud SQL untuk PostgreSQL
Untuk mengimpor data dari Cloud Storage ke Cloud SQL, pengguna yang memulai impor harus memiliki salah satu peran berikut:
- Peran Admin Cloud SQL
- Peran khusus,
yang mencakup izin berikut:
cloudsql.instances.get
cloudsql.instances.import
Selain itu, akun layanan untuk instance Cloud SQL harus memiliki salah satu peran berikut:
- Peran IAM
storage.objectAdmin
- Peran khusus, termasuk izin berikut:
storage.objects.get
storage.objects.list
(hanya untuk mengimpor file secara paralel)
Untuk mendapatkan bantuan terkait peran IAM, lihat Identity and Access Management.
Mengimpor data dari file CSV ke Cloud SQL untuk PostgreSQL
- Database dan tabel yang Anda gunakan untuk mengimpor harus ada di instance Cloud SQL. Untuk mendapatkan bantuan dalam membuat database, lihat Membuat database.
- File CSV Anda harus sesuai dengan persyaratan format file CSV.
Persyaratan format file CSV
File CSV harus memiliki satu baris untuk setiap baris data dan menggunakan kolom yang dipisahkan koma.
Untuk mengimpor data ke instance Cloud SQL menggunakan file CSV:
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Ringkasan instance, klik nama instance.
- Klik Import.
- Di bagian Pilih file yang ingin Anda impor data, masukkan
jalur ke bucket dan file CSV yang akan digunakan untuk impor. Atau, untuk mencari
file:
- Klik Cari.
- Di bagian Lokasi, klik dua kali nama bucket dalam daftar.
- Pilih file dalam daftar.
- Klik Pilih.
Anda dapat mengimpor file (
.gz
) yang dikompresi atau file (.csv
) yang tidak dikompresi. - Di bagian Format, pilih CSV.
- Tentukan Database dan Tabel di instance Cloud SQL tempat Anda ingin mengimpor file CSV.
- Anda dapat memilih opsi menentukan pengguna untuk operasi impor.
- Klik Impor untuk memulai impor.
gcloud
- Membuat bucket Cloud Storage.
Upload file ke bucket Anda.
Untuk mendapatkan bantuan dalam mengupload file ke bucket, lihat Mengupload objek.
- Upload data dari file CSV ke bucket.
- Identifikasi akun layanan untuk instance Cloud SQL tempat Anda
mengekspor. Anda dapat melakukannya dengan menjalankan perintah
gcloud sql instances describe
dengan nama instance. Cari kolomserviceAccountEmailAddress
di output.gcloud sql instances describe INSTANCE_NAME
- Salin kolom serviceAccountEmailAddress.
- Gunakan
gcloud storage buckets add-iam-policy-binding
untuk memberikan peran IAMstorage.objectAdmin
ke akun layanan instance Cloud SQL untuk bucket. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM. - Impor file:
gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --table=TABLE_NAME
Untuk informasi tentang penggunaan perintah
import csv
, lihat halaman referensi perintahsql import csv
. - Jika Anda tidak perlu mempertahankan izin IAM yang
telah ditetapkan sebelumnya, hapus izin tersebut menggunakan
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Membuat bucket Cloud Storage.
Upload file ke bucket Anda.
Untuk mendapatkan bantuan dalam mengupload file ke bucket, lihat Mengupload objek.
- Beri instance Anda peran IAM
legacyBucketWriter
danobjectViewer
untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM. - Impor file:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: ID project
- instance-id: ID instance
- bucket_name: Nama bucket Cloud Storage
- path_to_csv_file: Jalur ke file CSV
- database_name: Nama database di dalam instance Cloud SQL
- table_name: Nama tabel database
- escape_character: Karakter yang akan muncul sebelum karakter data yang perlu di-escape. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, "22" mewakili tanda kutip ganda. (opsional)
- quote_character: Karakter yang mencakup nilai dari kolom yang memiliki jenis data string. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, "22" mewakili tanda kutip ganda. (opsional)
- fields_terminated_by: Karakter yang memisahkan nilai kolom. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, "2C" mewakili koma. (opsional)
- lines_terminated_by: Karakter yang memisahkan kumpulan data baris. Nilai argumen ini harus berupa karakter dalam Kode ASCII Hex. Misalnya, "0A" mewakili baris baru. (opsional)
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Meminta isi JSON:
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": "database_name", "csvImportOptions": { "table": "table_name", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
Untuk mengetahui daftar lengkap parameter permintaan, lihat halaman instance:import. - Jika Anda tidak perlu mempertahankan izin IAM yang telah ditetapkan sebelumnya, hapus izin tersebut.
REST v1beta4
- Membuat bucket Cloud Storage.
Upload file ke bucket Anda.
Untuk mendapatkan bantuan dalam mengupload file ke bucket, lihat Mengupload objek.
- Beri instance
peran IAM
storage.objectAdmin
untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM. - Impor file:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: ID project
- instance-id: ID instance
- bucket_name: Nama bucket Cloud Storage
- path_to_csv_file: Jalur ke file CSV
- database_name: Nama database di dalam instance Cloud SQL
- table_name: Nama tabel database
- escape_character: Karakter yang akan muncul sebelum karakter data yang perlu di-escape. Nilai argumen ini harus dalam format hex ASCII. Misalnya,"22" mewakili tanda kutip ganda. (opsional)
- quote_character: Karakter yang mencakup nilai dari kolom yang memiliki jenis data string. Nilai argumen ini harus dalam format hex ASCII. Misalnya, "22" mewakili tanda kutip ganda. (opsional)
- fields_terminated_by: Karakter yang memisahkan nilai kolom. Nilai argumen ini harus dalam format hex ASCII. Misalnya, "2C" mewakili koma. (opsional)
- lines_terminated_by: Karakter yang memisahkan kumpulan data baris. Nilai argumen ini harus dalam format hex ASCII. Misalnya, "0A" mewakili baris baru. (opsional)
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Meminta isi JSON:
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": "database_name", "csvImportOptions": { "table": "table_name", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
Untuk mengetahui daftar lengkap parameter permintaan, lihat halaman instance:import. - Jika Anda tidak perlu mempertahankan izin IAM yang telah ditetapkan sebelumnya, hapus izin tersebut.
Menyesuaikan format file CSV untuk Cloud SQL untuk PostgreSQL
Anda dapat menggunakan gcloud
atau REST API untuk menyesuaikan format file CSV.
Contoh perintah gcloud
berikut:
gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --table=TABLE_NAME \ --quote="22" \ --escape="5C" \ --fields-terminated-by="2C" \ --lines-terminated-by="0A"
Isi permintaan REST API yang setara akan terlihat seperti ini:
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": ["DATABASE_NAME"], "csvImportOptions": { "table": "TABLE_NAME", "escapeCharacter": "5C", "quoteCharacter": "22", "fieldsTerminatedBy": "2C", "linesTerminatedBy": "0A" } } }
Jika Anda mendapatkan error seperti ERROR_RDBMS
, pastikan tabel tersebut
tersedia. 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.
Langkah berikutnya
- Pelajari cara memeriksa status operasi impor dan ekspor.
- Pelajari lebih lanjut tentang praktik terbaik untuk mengimpor dan mengekspor data.
- Masalah umum untuk impor dan ekspor.