All Products
Search
Document Center

AnalyticDB:Ekspor ke OSS

Last Updated:Mar 29, 2026

Setelah analisis selesai dan Anda perlu berbagi set data, mengarsipkan hasil, atau memberi makan data lake di sistem downstream, Anda dapat mengekspor data dari AnalyticDB for MySQL Data Warehouse Edition (V3.0) langsung ke Object Storage Service (OSS). Ekspor ini menggunakan tabel eksternal OSS sebagai target, dan data ditulis menggunakan pernyataan INSERT standar. Format CSV dan Parquet didukung.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Bucket OSS di wilayah yang sama dengan kluster AnalyticDB for MySQL Anda. Untuk menyiapkannya: OSS directory creation

    1. Aktifkan OSS.

    2. Buat bucket di Konsol OSS.

    3. Buat direktori di dalam bucket untuk menyimpan data yang diekspor — misalnya, adb_data/.

  • Kluster AnalyticDB for MySQL Data Warehouse Edition (V3.0) dengan akun, database, dan daftar putih yang telah dikonfigurasi. Lihat Buat kluster.

    Jika kluster Anda berjalan dalam mode elastis, login ke Konsol AnalyticDB for MySQL, buka halaman detail kluster, lalu aktifkan Elastic Network Interface (ENI) pada bagian Network Information. Enable the ENI network

Ikhtisar ekspor

Alur kerja ekspor terdiri dari tiga langkah:

  1. Hubungkan ke kluster AnalyticDB for MySQL Anda.

  2. Buat tabel eksternal OSS yang dipetakan ke direktori OSS target.

  3. Jalankan pernyataan INSERT untuk menulis data dari tabel sumber ke tabel eksternal.

Setelah ekspor selesai, verifikasi output dengan login ke Konsol OSS dan memeriksa direktori target, atau dengan menjalankan kueri SELECT terhadap tabel eksternal.

Ekspor ke tabel eksternal non-partisi

Buat tabel eksternal

Ikuti langkah-langkah dalam Buat tabel eksternal OSS untuk objek non-partisi untuk membuat tabel eksternal di database target.

Pilih pernyataan penulisan

Pilih pernyataan penulisan berdasarkan cara Anda ingin menangani objek yang sudah ada di path OSS tabel eksternal.

PernyataanPerilakuKapan digunakan
INSERT INTO ... SELECTMenambahkan data. Setiap eksekusi menghasilkan objek OSS baru tanpa memengaruhi objek yang sudah ada.Ekspor inkremental, atau saat mengumpulkan hasil dari beberapa eksekusi.
INSERT OVERWRITE ... SELECTMenghapus semua objek yang ada di path OSS tabel eksternal, lalu menulis data baru.Refresh penuh, atau saat mengganti seluruh hasil ekspor sebelumnya.
REPLACE SELECT FROMBerperilaku sama seperti INSERT INTO ... SELECT. Tabel eksternal OSS tidak mendukung primary key, sehingga tidak terjadi deduplikasi.Menambahkan data saat data yang sudah ada tetap tidak berubah dan data baru disimpan ke objek OSS baru.

Sintaks:

-- Tambahkan data
INSERT INTO <external_table>
SELECT <columns> FROM <source_table>;

-- Ganti data
INSERT OVERWRITE <external_table>
SELECT <columns> FROM <source_table>;

Contoh — ekspor data dari source_table di database adb_demo ke tabel eksternal OSS bernama oss_table:

-- Tambahkan
INSERT INTO oss_table
SELECT col1, col2, col3 FROM source_table;

-- Ganti
INSERT OVERWRITE oss_table
SELECT col1, col2, col3 FROM source_table;
Penting

Semua kolom harus disertakan dalam daftar SELECT. Memilih subset kolom tidak didukung.

Ekspor ke satu objek OSS (hanya CSV, versi 3.1.2 dan lebih baru)

Secara default, data ditulis ke beberapa objek OSS. Pada AnalyticDB for MySQL versi 3.1.2 dan lebih baru, gunakan petunjuk output_filename untuk mengekspor seluruh data ke satu objek CSV bernama.

/*+output_filename=<filename>*/INSERT [OVERWRITE] <external_table>
SELECT <columns> FROM <source_table>;

Contoh:

/*+output_filename=adb.txt*/INSERT OVERWRITE oss_table
SELECT * FROM source_table;

Kata kunci OVERWRITE menentukan apakah objek yang sudah ada dengan nama yang sama akan ditimpa. Objek lain di direktori tidak terpengaruh.

Ekspor ke satu objek hanya mendukung format CSV dan memerlukan versi 3.1.2 atau lebih baru. Parquet tidak didukung. Pada versi sebelumnya, sistem selalu menghasilkan beberapa objek dan jumlahnya ditentukan berdasarkan eksekusi tugas konkuren.

Ekspor ke tabel eksternal partisi

Tabel eksternal partisi dipetakan ke struktur direktori hierarkis OSS. Saat data ditulis, nilai kunci partisi menjadi nama direktori — nilai tersebut tidak disimpan sebagai kolom dalam objek CSV atau Parquet yang diekspor.

Contoh: tabel dengan dua kunci partisi (pcol1 dan pcol2) dan tiga kolom data, diekspor ke adb_data/. Baris dengan pcol1=1 dan pcol2=a ditulis ke:

adb_data/pcol1=1/pcol2=a/

Objek CSV atau Parquet hanya berisi nilai tiga kolom data. Nilai kunci partisi (1 dan a) muncul di path direktori, bukan di dalam file.

Penting

Data tabel eksternal partisi tidak dapat diekspor ke satu objek OSS. Petunjuk output_filename tidak didukung untuk tabel partisi.

Buat tabel eksternal

Ikuti langkah-langkah dalam Gunakan tabel eksternal untuk mengimpor data ke Data Warehouse Edition untuk membuat tabel eksternal OSS partisi.

Pilih mode spesifikasi partisi

Pilih mode berdasarkan seberapa banyak Anda mengetahui nilai partisi saat penulisan.

ModeSintaksPerilaku
Sepenuhnya statisPARTITION(par1=val1, par2=val2, ...)Semua nilai partisi ditentukan. Data ditambahkan ke partisi yang sesuai; objek baru dihasilkan setiap kali.
Statis-dinamisPARTITION(par1=val1, par2, ...)Nilai partisi tingkat atas ditentukan; nilai partisi tingkat bawah diambil dari data sumber.
Sepenuhnya dinamisTidak ada klausa PARTITIONSemua nilai partisi diambil dari data sumber.

Sintaks:

-- Partisi sepenuhnya statis
INSERT INTO <external_table> PARTITION(<par1>=<val1>, <par2>=<val2>, ...)
SELECT <columns> FROM <source_table>;

-- Partisi statis-dinamis
INSERT INTO <external_table> PARTITION(<par1>=<val1>, <par2>, ...)
SELECT <columns>, <par2_column> FROM <source_table>;

-- Partisi sepenuhnya dinamis
INSERT INTO <external_table>
SELECT <columns>, <par1_column>, <par2_column> FROM <source_table>;

Contoh:

-- Partisi sepenuhnya statis
INSERT INTO oss_table_par PARTITION(par1=val1, par2=val2)
SELECT col1, col2, col3 FROM source_table;

-- Partisi statis-dinamis
INSERT INTO oss_table_par PARTITION(par1=val1, par2)
SELECT col1, col2, col3, par2col FROM source_table;

-- Partisi sepenuhnya dinamis
INSERT INTO oss_table_par
SELECT col1, col2, col3, par1col, par2col FROM source_table;
Penting

Semua kolom non-partisi harus disertakan dalam daftar SELECT. Memilih subset kolom tidak didukung.

Timpa partisi

INSERT OVERWRITE PARTITION SELECT bekerja seperti INSERT INTO PARTITION SELECT, kecuali objek yang sudah ada di partisi target dihapus sebelum data baru ditulis. Partisi yang tidak memiliki data baru tidak terpengaruh.

INSERT OVERWRITE <external_table> PARTITION(<par1>=<val1>, <par2>=<val2>, ...) [IF NOT EXISTS]
SELECT <columns> FROM <source_table>;

Contoh:

INSERT OVERWRITE oss_table_par PARTITION(par1=val1, par2=val2) IF NOT EXISTS
SELECT col1, col2, col3 FROM source_table;

Tambahkan ke partisi

REPLACE INTO PARTITION SELECT FROM berperilaku identik dengan INSERT INTO PARTITION SELECT FROM. Tabel eksternal partisi tidak mendukung primary key, sehingga tidak terjadi deduplikasi.

Catatan penggunaan

Sertakan nama kolom dalam output

Secara default, objek yang diekspor tidak menyertakan baris header. Untuk menyertakan nama kolom, tambahkan petunjuk berikut di awal pernyataan:

/*+sql_output_oss_file_head_enable=true*/INSERT [OVERWRITE] <external_table>
SELECT <columns> FROM <source_table>;

Jalankan ekspor besar secara asinkron

INSERT INTO dan INSERT OVERWRITE SELECT dijalankan secara sinkron secara default. Untuk ekspor berukuran ratusan gigabyte, koneksi client mungkin timeout sebelum pekerjaan selesai. Untuk menghindarinya, tambahkan awalan SUBMIT JOB pada pernyataan agar ekspor dijalankan secara asinkron:

SUBMIT JOB INSERT OVERWRITE <external_table> SELECT * FROM <source_table>;

Setelah mengirimkan, periksa status pekerjaan. Lihat Kirimkan tugas impor secara asinkron untuk detailnya.

Batasan

  • Hanya format CSV dan Parquet yang didukung.

  • Semua kolom harus ditulis ke tabel eksternal. Memilih subset kolom tidak didukung.

  • Penyisipan tingkat baris tidak didukung. INSERT INTO VALUES dan REPLACE INTO VALUES tidak didukung untuk tabel eksternal.

  • Ekspor ke satu objek (melalui petunjuk output_filename) hanya tersedia untuk CSV dan memerlukan versi 3.1.2 atau lebih baru.

  • Ekspor ke satu objek tidak didukung untuk tabel eksternal partisi.

Langkah selanjutnya