全部产品
Search
文档中心

AnalyticDB:Ekspor Data ke OSS

更新时间:Jul 06, 2025

Tema ini menjelaskan cara menggunakan tabel eksternal dan pernyataan INSERT INTO untuk mengekspor data dari AnalyticDB for MySQL Data Warehouse Edition (V3.0) ke Object Storage Service (OSS). Hanya file CSV dan Parquet yang dapat diekspor dari AnalyticDB for MySQL ke OSS.

Prasyarat

  • Sebuah direktori dibuat di OSS dengan melakukan operasi berikut untuk menyimpan data AnalyticDB for MySQL:

    1. Aktifkan OSS.

      Catatan

      Pastikan bahwa Bucket OSS yang terlibat berada di wilayah yang sama dengan kluster AnalyticDB for MySQL Data Warehouse Edition (V3.0).

    2. Buat sebuah bucket di konsol OSS. Untuk informasi lebih lanjut, lihat Buat bucket.

    3. Buat sebuah direktori di dalam bucket. Untuk informasi lebih lanjut, lihat Buat direktori.

      Sebagai contoh, Anda dapat membuat direktori bernama adb_data/ di OSS untuk menyimpan data yang diekspor dari AnalyticDB for MySQL Data Warehouse Edition (V3.0).

      新建目录

  • Sebuah kluster Data Warehouse Edition (V3.0) AnalyticDB for MySQL, akun, dan database telah dibuat. Daftar putih telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Buat kluster.

Catatan

Jika kluster AnalyticDB for MySQL Data Warehouse Edition (V3.0) berada dalam mode elastis, Anda harus masuk ke konsol AnalyticDB for MySQL dan melihat informasi kluster, lalu mengaktifkan Antarmuka Jaringan Elastis (ENI) di bagian Informasi Jaringan.启用ENI网络

Prosedur

Dalam contoh ini, data diekspor dari tabel source_table di database adb_demo dari kluster AnalyticDB for MySQL Data Warehouse Edition (V3.0) ke direktori adb_data di OSS.

  1. Hubungkan ke kluster AnalyticDB for MySQL dan database. Untuk informasi lebih lanjut, lihat Hubungkan ke kluster AnalyticDB for MySQL.

  2. Buat tabel eksternal di database adb_demo. Untuk informasi lebih lanjut, lihat bagian "Tabel eksternal OSS non-partisi" dari topik Menggunakan tabel eksternal untuk mengimpor data ke Data Warehouse Edition.

  3. Pilih pernyataan yang dapat dieksekusi untuk menulis data berdasarkan jenis tabel eksternal, dan tulis data sumber ke tabel eksternal yang dibuat di Langkah 2. Untuk informasi lebih lanjut tentang sintaksis yang didukung untuk berbagai jenis tabel eksternal, lihat bagian "Sintaksis yang digunakan untuk menulis data ke tabel eksternal yang tidak dipartisi" dan "Sintaksis yang digunakan untuk menulis data ke tabel eksternal yang dipartisi" dari topik ini.

  4. Setelah tugas penulisan di Langkah 3 selesai, masuk ke konsol OSS dan lihat data yang diekspor ke direktori di OSS. Sebagai alternatif, hubungkan ke kluster AnalyticDB for MySQL untuk memeriksa data yang diekspor ke tabel eksternal.

Sintaksis yang digunakan untuk menulis data ke tabel eksternal yang tidak dipartisi

Ketika Anda mengeksekusi INSERT INTO atau INSERT OVERWRITE SELECT untuk mengimpor data, pernyataan tersebut secara default dieksekusi secara sinkron. Jika ratusan gigabyte data diimpor, koneksi antara klien dan server AnalyticDB for MySQL mungkin ditutup, dan tugas impor data gagal. Dalam hal ini, kami sarankan Anda mengeksekusi pernyataan INSERT OVERWRITE SELECT secara asinkron untuk mengimpor data dengan menambahkan SUBMIT JOB di awal pernyataan. Contoh: SUBMIT JOB INSERT OVERWRITE adb_table SELECT * FROM oss_table;. Untuk informasi lebih lanjut tentang cara menyerahkan tugas asinkron, lihat Kirim pekerjaan impor secara asinkron.

Penting

Secara default, objek yang diimpor ke OSS tidak berisi nama kolom. Jika Anda ingin objek-objek ini memiliki nama kolom, tambahkan petunjuk berikut di awal pernyataan impor data: /*+sql_output_oss_file_head_enable=true*/.

  • INSERT SELECT FROM

    • Fitur: Jika data Anda disimpan di tabel yang berbeda, Anda dapat mengeksekusi pernyataan INSERT SELECT FROM untuk menyalin data ke tabel eksternal. Anda dapat menulis data dari tabel sumber ke tabel eksternal, lalu mengekspor data ke OSS. Setiap kali data ditulis, objek OSS baru dihasilkan.

      Penting

      Kolom yang ingin Anda ekspor harus semuanya ditulis ke tabel eksternal. Anda tidak dapat menentukan kolom tertentu yang akan ditulis.

      Sintaksis:

      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

    • Fitur: Anda dapat mengeksekusi pernyataan INSERT OVERWRITE SELECT untuk menyisipkan data secara batch ke tabel. Jika data sudah ada di tabel eksternal, semua objek di jalur tabel eksternal asli dihapus sebelum objek OSS baru dihasilkan.

      Penting

      Kolom yang ingin Anda ekspor harus semuanya ditulis ke tabel eksternal. Anda tidak dapat menentukan kolom tertentu yang akan ditulis.

      Sintaksis:

      INSERT OVERWRITE table_name 
      select_statement;

      Contoh:

      INSERT OVERWRITE oss_table 
      SELECT col1, col2, col3 FROM source_table;
  • REPLACE SELECT FROM

    • Fitur: Tabel eksternal OSS tidak mendukung kunci utama. Kinerja penulisan pernyataan REPLACE SELECT FROM konsisten dengan pernyataan INSERT SELECT FROM. Data ditambahkan ke tabel lain. Jika data sudah ada di tabel tujuan, data yang ada tetap tidak berubah, dan data baru disimpan ke objek OSS baru.

  • Ekspor data dalam format CSV ke objek OSS tunggal (format Parquet tidak didukung)

    • Fitur: Anda dapat menentukan objek OSS tunggal menggunakan petunjuk dan mengekspor data ke objek ini. Ketika kata kunci overwrite disertakan, objek dengan nama yang sama di direktori yang didefinisikan dalam parameter TABLE_PROPERTIES tabel eksternal akan ditimpa. Objek lain di direktori tidak terpengaruh.

      Penting

      Kolom yang ingin Anda ekspor harus semuanya ditulis ke tabel eksternal. Anda tidak dapat menentukan kolom tertentu yang akan ditulis.

      Deskripsi versi:

      • Versi AnalyticDB for MySQL sebelum 3.1.2 tidak mendukung fitur ini. Nama objek dihasilkan secara otomatis oleh sistem, dan beberapa objek diekspor. Sistem secara dinamis menentukan jumlah objek berdasarkan seberapa cepat tugas konkuren dijalankan.

      • Versi AnalyticDB for MySQL 3.1.2 dan seterusnya memungkinkan Anda mengekspor data dari tabel eksternal AnalyticDB for MySQL dalam format CSV ke objek OSS tunggal menggunakan petunjuk. Anda dapat menentukan nama untuk objek tersebut. Jika data tabel eksternal diekspor tanpa petunjuk, beberapa objek diekspor seperti pada versi AnalyticDB for MySQL sebelum 3.1.2.

      Sintaksis:

      /*+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;

Sintaksis yang digunakan untuk menulis data ke tabel eksternal yang dipartisi

Ketika Anda mengeksekusi INSERT INTO atau INSERT OVERWRITE SELECT untuk mengimpor data, pernyataan tersebut secara default dieksekusi secara sinkron. Jika ratusan gigabyte data diimpor, koneksi antara klien dan server AnalyticDB for MySQL mungkin ditutup, dan tugas impor data gagal. Dalam hal ini, kami sarankan Anda mengeksekusi pernyataan INSERT OVERWRITE SELECT secara asinkron untuk mengimpor data dengan menambahkan SUBMIT JOB di awal pernyataan. Contoh: SUBMIT JOB INSERT OVERWRITE adb_table SELECT * FROM oss_table;. Untuk informasi lebih lanjut tentang cara menyerahkan tugas asinkron, lihat Kirim pekerjaan impor secara asinkron.

Penting

Secara default, objek yang diimpor ke OSS tidak berisi nama kolom. Jika Anda ingin objek-objek ini memiliki nama kolom, tambahkan petunjuk berikut di awal pernyataan impor data: /*+sql_output_oss_file_head_enable=true*/.

Ketika Anda menulis data dari tabel yang dipartisi ke objek, objek tersebut tidak berisi data dari kolom kunci partisi. Data dari kolom kunci partisi ditampilkan di direktori OSS.

Penting

Data dari tabel eksternal yang dipartisi tidak dapat diekspor ke objek OSS tunggal.

Sebagai contoh, dua kolom kunci partisi dan tiga kolom umum didefinisikan untuk tabel yang dipartisi. Kolom kunci partisi di partisi hash bernama pcol1, dan nilainya adalah 1. Kolom kunci partisi di partisi daftar bernama pcol2, dan nilainya adalah a. Data dari tabel yang dipartisi diekspor ke jalur adb_data/ di OSS. Jika Anda menulis data dari partisi yang pcol1-nya diatur ke 1 dan pcol2-nya diatur ke a, jalur relatif objek adalah adb_data/pcol1=1/pcol2=a/. Objek CSV atau Parquet tidak berisi nilai kolom pcol1 dan pcol2. Hanya nilai dari tiga kolom umum yang disertakan.

  • INSERT INTO PARTITION SELECT FROM

Fitur: Anda dapat mengeksekusi pernyataan INSERT INTO PARTITION SELECT FROM untuk menyisipkan data secara batch ke tabel eksternal yang dipartisi. Saat Anda menulis data, Anda dapat menentukan semua kolom partisi dan nilainya di bidang PARTITION. Anda juga dapat menentukan hanya nilai partisi tingkat tinggi. Nilai partisi tingkat rendah dihasilkan secara dinamis. Sebagai alternatif, Anda mungkin tidak menentukan bidang PARTITION. Dalam hal ini, nilai partisi semua tingkat dihasilkan secara dinamis.

Data baru ditambahkan ke partisi yang sesuai. Setiap kali data ditulis, objek OSS baru dihasilkan.

Kolom yang ingin Anda ekspor harus semuanya ditulis ke tabel eksternal. Anda tidak dapat menentukan kolom tertentu yang akan ditulis.

Partisi statis sepenuhnya

Sintaksis:

INSERT INTO table_name PARTITION(par1=val1,par2=val2,...) 
select_statement;

Contoh:

INSERT INTO oss_table_par PARTITION(par1=val1,par2=val2) 
select col1, col2, col3 FROM source_table;

Partisi statis-dinamis

Sintaksis:

INSERT INTO table_name PARTITION(par1=val1,par2,...) 
select_statement;

Contoh:

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

Partisi dinamis sepenuhnya

Sintaksis:

INSERT INTO table_name 
select_statement;

Contoh:

INSERT INTO oss_table_par
SELECT col1, col2, col3, par1col, par2col FROM source_table;
  • INSERT OVERWRITE PARTITION SELECT

Fitur: Pernyataan INSERT OVERWRITE PARTITION SELECT digunakan dengan cara yang sama seperti pernyataan INSERT INTO PARTITION SELECT. Namun, ketika Anda mengeksekusi pernyataan INSERT OVERWRITE PARTITION SELECT, objek yang ada di partisi yang diinginkan dibersihkan. Objek di partisi yang tidak memiliki data baru yang ditulis tidak dibersihkan.

Sintaksis:

INSERT OVERWRITE table_name PARTITION(par1=val1,par2=val2,...)[IF NOT EXISTS] 
select_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

Fitur: Tabel eksternal tidak mendukung kunci utama. Kinerja penulisan pernyataan REPLACE INTO PARTITION SELECT FROM konsisten dengan pernyataan INSERT INTO PARTITION SELECT FROM.

Pernyataan yang tidak didukung

AnalyticDB for MySQL tidak mengizinkan Anda menyisipkan data ke tabel eksternal per baris. INSERT INTO VALUES dan REPLACE INTO VALUES tidak didukung.