AnalyticDB for MySQL memungkinkan Anda mengekspor data dari AnalyticDB for MySQL Data Warehouse Edition (V3.0) ke Object Storage Service (OSS) menggunakan tabel eksternal dan pernyataan INSERT INTO. Fitur ekspor ini hanya mendukung format file CSV dan Parquet.
Prasyarat
-
Buat direktori di Object Storage Service (OSS) untuk menyimpan data dari AnalyticDB for MySQL:
-
Catatan
Bucket OSS dan kluster AnalyticDB for MySQL Data Warehouse Edition (V3.0) Anda harus berada di wilayah yang sama.
-
Misalnya, buat direktori bernama
adb_data/di OSS. Data yang diekspor dari AnalyticDB for MySQL Data Warehouse Edition (V3.0) disimpan di direktori ini.
-
-
Anda telah membuat kluster Data Warehouse Edition (V3.0), mengonfigurasi daftar putihnya, serta membuat akun dan database. Untuk informasi selengkapnya, lihat Panduan cepat AnalyticDB for MySQL.
Jika kluster AnalyticDB for MySQL Data Warehouse Edition berada dalam mode elastis, login ke Konsol AnalyticDB for MySQL untuk mengaktifkan jaringan ENI (Elastic Network Interface). Pada panel Network Information instans, aktifkan sakelar ENI Network. Jaringan ENI harus diaktifkan agar instans dalam mode elastis dapat mengimpor data menggunakan tabel eksternal.
Prosedur
Contoh ini mengekspor data dari tabel source_table di database adb_demo pada AnalyticDB for MySQL Data Warehouse Edition ke folder adb_data di OSS.
-
Hubungkan ke kluster target dan masuk ke database sumber.
-
Di database
adb_demo, buat tabel eksternal. Untuk informasi selengkapnya, lihat Tabel eksternal OSS non-partisi. -
Jalankan pernyataan write untuk menyalin data sumber ke tabel eksternal yang telah dibuat sebelumnya. Untuk informasi tentang sintaks yang didukung untuk berbagai jenis tabel eksternal, lihat Sintaks untuk tabel eksternal non-partisi dan Sintaks untuk tabel eksternal partisi.
-
Setelah pekerjaan write pada Langkah 3 selesai, login ke Konsol OSS untuk melihat file data yang diekspor di folder tujuan. Anda juga dapat langsung melakukan kueri terhadap data yang diekspor ke tabel eksternal dari AnalyticDB for MySQL.
Sintaks untuk tabel eksternal non-partisi
Ketika Anda menggunakan INSERT INTO atau INSERT OVERWRITE SELECT untuk menulis data, pekerjaan tersebut berjalan secara sinkron secara default. Jika Anda menulis data dalam jumlah besar, misalnya ratusan gigabyte, koneksi antara client dan server AnalyticDB for MySQL mungkin mengalami timeout, sehingga menyebabkan pekerjaan gagal. Oleh karena itu, jika Anda menulis data dalam jumlah besar, kami menyarankan menjalankan pernyataan INSERT OVERWRITE SELECT secara asinkron dengan menambahkan SUBMIT JOB sebelum pernyataan tersebut. Contoh: SUBMIT JOB INSERT OVERWRITE adb_table SELECT * FROM oss_table;. Untuk informasi selengkapnya tentang pengiriman pekerjaan secara asinkron, lihat pengiriman pekerjaan impor asinkron.
Secara default, file yang diekspor ke OSS hanya berisi data dan tidak menyertakan header kolom. Untuk mengekspor file beserta header kolom, tambahkan petunjuk /*+sql_output_oss_file_head_enable=true*/ sebelum pernyataan tersebut.
-
Insert select from
-
Deskripsi: Jika data Anda sudah ada di tabel lain, Anda dapat menggunakan
INSERT SELECT FROMuntuk menyalinnya ke tabel eksternal. Pernyataan ini menulis data dari tabel sumber ke lokasi OSS tabel eksternal. Setiap operasi write menghasilkan file data OSS baru.PentingAnda harus menulis semua kolom ke tabel eksternal. Anda tidak dapat menentukan hanya sebagian kolom saja.
Sintaks:
INSERT INTO table_name SELECT select_statement FROM from_statement;Contoh:
insert into oss_table select col1, col2, col3 from source_table;
-
-
Insert overwrite select
-
Deskripsi: Gunakan
INSERT OVERWRITE SELECTuntuk melakukan penyisipan massal ke tabel. Jika tabel eksternal tujuan sudah berisi data, pernyataan ini terlebih dahulu menghapus semua file data yang ada di path tabel eksternal tersebut, lalu menghasilkan file data OSS baru.PentingAnda harus menulis semua kolom ke tabel eksternal. Anda tidak dapat menentukan hanya sebagian kolom saja.
Sintaks:
INSERT OVERWRITE table_name SELECT select_statement FROM from_statement;Contoh:
INSERT OVERWRITE oss_table SELECT col1, col2, col3 FROM source_table;
-
-
Replace select from
-
Deskripsi: Karena tabel eksternal OSS tidak mendukung primary key,
REPLACE SELECT FROMberperilaku identik denganINSERT SELECT FROM. Pernyataan ini menyalin data ke tabel lain. Data yang sudah ada di tabel tujuan tetap tidak berubah, dan data baru ditambahkan sebagai file data OSS baru.
-
-
Ekspor ke satu file OSS (hanya format CSV; tidak didukung untuk format Parquet)
-
Deskripsi: Anda dapat menggunakan petunjuk untuk mengekspor data ke satu file OSS tertentu. Jika kata kunci
OVERWRITEdisertakan, file yang sudah ada dengan nama yang sama di direktori yang didefinisikan dalamTABLE_PROPERTIEStabel eksternal akan ditimpa. File lain di direktori tersebut tidak terpengaruh.PentingAnda harus menulis semua kolom ke tabel eksternal. Anda tidak dapat menentukan hanya sebagian kolom saja.
Catatan versi:
-
Untuk kluster AnalyticDB for MySQL versi sebelum V3.1.2: Fitur ini tidak didukung. Sistem secara otomatis menghasilkan nama file dan mengekspor data ke beberapa file. Jumlah file tujuan ditentukan secara dinamis berdasarkan konkurensi pekerjaan.
-
Untuk kluster AnalyticDB for MySQL versi 3.1.2 dan seterusnya, Anda dapat menggunakan petunjuk untuk mengekspor tabel eksternal reguler dalam format CSV AnalyticDB for MySQL ke satu file di OSS. Anda juga dapat menyesuaikan nama file selama proses ekspor. Tanpa petunjuk, perilaku ekspor konsisten dengan versi sebelum 3.1.2: data diekspor ke beberapa file.
Sintaks:
/*+output_filename=adb.txt*/INSERT [OVERWRITE] table_name SELECT select_statement FROM from_statement;Contoh:
/*+output_filename=adb.txt*/INSERT [OVERWRITE] oss_table SELECT * FROM source_table; -
-
Sintaks untuk tabel eksternal partisi
Ketika Anda menggunakan INSERT INTO atau INSERT OVERWRITE SELECT untuk menulis data, pekerjaan tersebut berjalan secara sinkron secara default. Jika Anda menulis data dalam jumlah besar, misalnya ratusan gigabyte, koneksi antara client dan server AnalyticDB for MySQL mungkin mengalami timeout, sehingga menyebabkan pekerjaan gagal. Oleh karena itu, jika Anda menulis data dalam jumlah besar, kami menyarankan menjalankan pernyataan INSERT OVERWRITE SELECT secara asinkron dengan menambahkan SUBMIT JOB sebelum pernyataan tersebut. Contoh: SUBMIT JOB INSERT OVERWRITE adb_table SELECT * FROM oss_table;. Untuk informasi selengkapnya tentang pengiriman pekerjaan secara asinkron, lihat pengiriman pekerjaan impor asinkron.
Secara default, file yang diekspor ke OSS hanya berisi data dan tidak menyertakan header kolom. Untuk mengekspor file beserta header kolom, tambahkan petunjuk /*+sql_output_oss_file_head_enable=true*/ sebelum pernyataan tersebut.
Ketika Anda menulis data dari tabel partisi, file data tidak menyertakan data kolom kunci partisi. Informasi partisi disimpan dalam struktur direktori OSS.
Mengekspor data dari tabel eksternal partisi ke satu file OSS tidak didukung.
Sebagai contoh, pertimbangkan tabel partisi yang memiliki dua kolom kunci partisi dan tiga kolom biasa. Kolom kunci partisi tingkat pertama adalah pcol1 dengan nilai 1, dan kolom kunci partisi tingkat kedua adalah pcol2 dengan nilai a. Data dari tabel partisi tersebut diekspor ke path OSS adb_data/. Ketika Anda menulis data ke partisi di mana pcol1=1 dan pcol2=a, path relatif file data tersebut adalah adb_data/pcol1=1/pcol2=a/. File data CSV atau Parquet yang dihasilkan tidak berisi nilai untuk pcol1 dan pcol2. File tersebut hanya berisi nilai dari tiga kolom biasa.
-
Insert into partition select from
Fungsi: Perintah INSERT INTO PARTITION SELECT FROM melakukan penyisipan massal data ke tabel eksternal partisi. Saat menulis data, Anda dapat menggunakan klausa PARTITION untuk menentukan semua kolom dan nilai partisi. Atau, Anda dapat menentukan hanya nilai partisi tingkat tinggi dan membiarkan partisi tingkat rendah dihasilkan secara dinamis. Anda juga dapat menghilangkan klausa PARTITION sepenuhnya, yang akan menghasilkan semua level partisi secara dinamis.
Ketika data ditulis, data tersebut ditambahkan ke partisi yang sesuai. Setiap operasi write menghasilkan file data OSS baru.
Anda harus menulis semua kolom ke tabel eksternal. Anda tidak dapat menentukan hanya sebagian kolom saja.
Partisi statis penuh
Sintaks
INSERT INTO table_name PARTITION(par1=val1,par2=val2,...)
SELECT select_statement FROM from_statement;
Contoh
INSERT INTO oss_table_par PARTITION(par1=val1,par2=val2)
select col1, col2, col3 FROM source_table;
Partisi sebagian statis dan sebagian dinamis
Sintaks
INSERT INTO table_name PARTITION(par1=val1,par2,...)
SELECT select_statement FROM from_statement;
Contoh
INSERT INTO oss_table_par PARTITION(par1=val1,par2)
SELECT col1, col2, col3, par2col FROM source_table;
Partisi dinamis penuh
Sintaks
INSERT INTO table_name
SELECT select_statement FROM from_statement;
Contoh
INSERT INTO oss_table_par
SELECT col1, col2, col3, par1col, par2col FROM source_table;
-
Insert overwrite partition select
Fungsi: Penggunaannya sama dengan INSERT INTO PARTITION SELECT. Namun, perintah ini juga menghapus file data yang sudah ada dari partisi target yang terlibat dalam eksekusi. File data di partisi yang tidak menerima data baru tidak dihapus.
Sintaks:
INSERT OVERWRITE table_name PARTITION(par1=val1,par2=val2,...)[IF NOT EXISTS]
SELECT select_statement FROM from_statement;
Contoh:
INSERT OVERWRITE oss_table_par PARTITION(par1=val1,par2=val2) IF NOT EXISTS
SELECT col1, col2, col3 FROM source_table;
-
Replace into partition select from
Deskripsi: Karena tabel eksternal tidak mendukung primary key, REPLACE INTO PARTITION SELECT FROM berperilaku identik dengan INSERT INTO PARTITION SELECT FROM.
Sintaks yang tidak didukung
Tabel eksternal AnalyticDB for MySQL tidak mendukung sintaks penulisan tingkat baris. Secara spesifik, pernyataan INSERT INTO VALUES dan REPLACE INTO VALUES tidak didukung.