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 MySQL
Peran dan izin yang diperlukan untuk mengekspor dari Cloud SQL untuk MySQL
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,
termasuk 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 MySQL
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.
- Klik Tampilkan opsi lanjutan.
- Di bagian Database, 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
gsutil iam
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, revoke sekarang.
REST v1
- Buat bucket untuk ekspor:
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
Langkah ini tidak wajib, tetapi sangat direkomendasikan, agar Anda tidak membuka akses ke data lain.
- Beri instance Anda peran IAM
legacyBucketWriter
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 melihat respons JSON seperti berikut:
Jika kueri pilihan Anda menentukan database, kueri tersebut akan menggantikan properti
databases
. - Jika Anda tidak perlu mempertahankan izin IAM yang telah ditetapkan sebelumnya, hapus sekarang.
REST v1beta4
- Buat bucket untuk ekspor:
gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
Langkah ini tidak wajib, tetapi sangat direkomendasikan, agar Anda tidak membuka akses ke data lain.
- Beri instance Anda peran IAM
storage.objectAdmin
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 melihat respons JSON seperti berikut:
Jika kueri pilihan Anda menentukan database, kueri tersebut akan menggantikan properti
databases
. - Jika Anda tidak perlu mempertahankan peran IAM yang telah ditetapkan sebelumnya, revoke 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" } } }
Contoh gcloud
dan API sebelumnya setara dengan menjalankan
pernyataan SQL berikut:
SELECT [QUERY] INTO OUTFILE ... CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\n'
Mengimpor data ke Cloud SQL untuk MySQL
Peran dan izin yang diperlukan untuk mengimpor ke Cloud SQL untuk MySQL
Untuk mengimpor data dari Cloud Storage ke Cloud SQL, pengguna yang memulai impor harus memiliki salah satu peran berikut:
- Peran Cloud SQL Editor
- Peran khusus,
termasuk 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.
Mengekspor data dari server MySQL lokal ke file CSV
Untuk mengekspor tabel MySQL yang akan diimpor ke Cloud SQL, sebaiknya format file tersebut menggunakan perintah berikut:
mysql --host=INSTANCE_IP --user=USER_NAME --password DATABASE \ -e " SELECT * FROM TABLE INTO OUTFILE 'FILE_NAME' CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' "
Anda dapat menyesuaikan format file ekspor CSV.
Mengimpor data dari file CSV ke Cloud SQL untuk MySQL
- Database dan tabel yang Anda gunakan untuk mengimpor harus ada di
instance Cloud SQL.
Untuk mendapatkan bantuan dalam membuat database,
lihat Membuat database.
Untuk membuat tabel, gunakan pernyataan SQL
CREATE TABLE
di klienmysql
. - File CSV Anda harus sesuai dengan persyaratan format file CSV.
- Jika Anda mengimpor data yang diekspor dari server MySQL
lokal:
- Membuat bucket di Cloud Storage.
- Upload file dump SQL ke bucket Cloud Storage.
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.
- 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
gsutil iam
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 menggunakan
gsutil iam
.
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 melihat respons JSON seperti berikut:
Untuk mengetahui daftar lengkap parameter permintaan, lihat halaman instances: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 melihat respons JSON seperti berikut:
Untuk mengetahui daftar lengkap parameter permintaan, lihat halaman instances:import. - Jika Anda tidak perlu mempertahankan izin IAM yang telah ditetapkan sebelumnya, hapus izin tersebut.
Menyesuaikan format file CSV untuk Cloud SQL untuk MySQL
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" } } }
Contoh gcloud
dan API sebelumnya setara dengan menjalankan
pernyataan SQL berikut:
LOAD DATA LOCAL INFILE ... CHARACTER SET 'utf8mb4'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\'.
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 selanjutnya
- 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.