全部产品
Search
文档中心

AnalyticDB:Gunakan tabel asing OSS untuk mengimpor dan mengekspor data

更新时间:Jul 02, 2025

AnalyticDB for PostgreSQL memungkinkan Anda mengimpor dan mengekspor data antara Object Storage Service (OSS) dan tabel AnalyticDB for PostgreSQL menggunakan tabel asing OSS. Tabel asing OSS memungkinkan Anda mengimpor dan mengekspor data di seluruh akun Alibaba Cloud.

Batasan

Instansi AnalyticDB for PostgreSQL dan Bucket OSS yang terlibat dalam impor dan ekspor data harus berada di wilayah yang sama.

Format objek yang didukung

Anda dapat menggunakan tabel asing OSS untuk mengimpor data dari dan mengekspor data ke objek data berikut:

  • Objek CSV dan TEXT tanpa kompresi.

  • Objek CSV dan TEXT yang dikompresi dengan GZIP.

  • Objek biner ORC.

    Untuk informasi tentang pemetaan tipe data antara ORC dan AnalyticDB for PostgreSQL, lihat bagian "Pemetaan tipe data antara ORC dan AnalyticDB for PostgreSQL" pada topik Pemetaan tipe data untuk tabel asing OSS.

Buat server OSS, pemetaan pengguna ke server OSS, dan tabel asing OSS

Sebelum menggunakan tabel asing OSS, Anda harus membuat server OSS, pemetaan pengguna ke server OSS, dan tabel asing OSS.

Impor data dari OSS ke tabel AnalyticDB for PostgreSQL

  1. Unggah file contoh bernama example.csv ke OSS. Untuk informasi lebih lanjut, lihat bagian "Persiapan" pada topik Gunakan tabel asing OSS untuk analisis danau data dan Unggah objek.

    Catatan
    • Untuk menghilangkan proses encoding dan meningkatkan efisiensi, disarankan menggunakan format encoding data yang sama untuk objek data dan basis data. Format encoding basis data default adalah UTF-8.

    • Semua node komputasi AnalyticDB for PostgreSQL menggunakan mekanisme polling untuk membaca objek data OSS secara paralel.

    • AnalyticDB for PostgreSQL dapat membaca beberapa objek CSV dan TEXT secara paralel. Secara default, empat objek dapat dibaca secara paralel. Untuk memaksimalkan efisiensi pembacaan, disarankan mengatur jumlah objek yang dapat dibaca secara paralel menjadi kelipatan bulat dari jumlah core node komputasi. Jumlah core node komputasi adalah hasil kali jumlah node komputasi dan jumlah core per node komputasi. Untuk informasi tentang cara membagi objek, lihat bagian "Bagi objek besar" pada topik Praktik terbaik untuk melakukan operasi pada tabel asing OSS.

  2. Hubungkan ke basis data AnalyticDB for PostgreSQL. Untuk informasi lebih lanjut, lihat Koneksi klien.

  3. Buat server OSS.

    CREATE SERVER oss_serv
        FOREIGN DATA WRAPPER oss_fdw
        OPTIONS (
            endpoint 'oss-cn-********.aliyuncs.com',
            bucket 'adb-pg'
      );

    Parameter

    • endpoint: titik akhir yang digunakan untuk mengakses data OSS. AnalyticDB for PostgreSQL hanya memungkinkan Anda mengonfigurasi titik akhir internal. Untuk informasi lebih lanjut, lihat bagian "Alibaba Cloud public cloud" pada topik Wilayah dan titik akhir.

    • bucket: nama Bucket OSS yang menyimpan objek data. Bucket OSS harus berada di wilayah yang sama dengan instansi AnalyticDB for PostgreSQL.

  4. Buat pengguna untuk mengakses server OSS.

    CREATE USER MAPPING FOR PUBLIC
        SERVER oss_serv
        OPTIONS (
            id 'LTAI****************',
            key 'yourAccessKeySecret'
        );
    Catatan

    Ketika Anda mengimpor atau mengekspor data di seluruh akun Alibaba Cloud, Anda harus mengonfigurasi ID AccessKey dan Rahasia AccessKey dari akun Alibaba Cloud yang memiliki Bucket OSS.

  5. Buat tabel asing OSS bernama ossexample.

    CREATE FOREIGN TABLE ossexample (
        date text,
        time text,
        open float,
        high float,
        low float,
        volume int
    ) SERVER oss_serv OPTIONS (dir 'oss_adb/', format 'csv');
  6. Eksekusi pernyataan INSERT atau CREATE TABLE AS untuk mengimpor data OSS.

    • INSERT

      1. Untuk mengeksekusi pernyataan INSERT untuk mengimpor data, buat tabel AnalyticDB for PostgreSQL bernama adbexample yang memiliki skema yang sama dengan tabel asing.

        CREATE TABLE adbexample (
            date text,
            time text,
            open float,
            high float,
            low float,
            volume int
        ) WITH (APPENDONLY=TRUE, ORIENTATION=COLUMN, COMPRESSTYPE=ZSTD, COMPRESSLEVEL=5);
      2. Eksekusi pernyataan INSERT untuk mengimpor data dari tabel asing ossexample ke tabel AnalyticDB for PostgreSQL adbexample.

        INSERT INTO adbexample SELECT * FROM ossexample;
    • CREATE TABLE AS

      Eksekusi pernyataan CREATE TABLE AS untuk membuat tabel AnalyticDB for PostgreSQL bernama adbexample dan mengimpor data dari tabel asing ossexample.

      CREATE TABLE adbexample AS SELECT * FROM ossexample DISTRIBUTED BY (volume);

Ekspor data dari tabel AnalyticDB for PostgreSQL ke OSS

  1. Buat tabel asing OSS yang dapat digunakan untuk mengekspor data ke objek CSV yang disimpan di direktori tt_csv.

    CREATE FOREIGN TABLE foreign_x (i int, j int)
    SERVER oss_serv
    OPTIONS (format 'csv', dir 'tt_csv/');
  2. Eksekusi pernyataan INSERT INTO untuk mengekspor data dari tabel AnalyticDB for PostgreSQL ke OSS.

    INSERT INTO foreign_x SELECT * FROM local_x;

Konvensi penamaan untuk objek yang diekspor

Ketika data diekspor, beberapa node komputasi menulis data ke direktori yang sama secara paralel. Objek yang diekspor menggunakan tabel asing OSS diberi nama dalam format berikut:

{tablename | prefix } _{timestamp}_{random_key}_{seg}{segment_id}_{fileno}.{ext}[.gz]

Tabel berikut menjelaskan parameter.

Parameter

Deskripsi

{tablename | prefix }

Awalan nama objek. Representasi awalan bervariasi berdasarkan apakah parameter prefix atau dir digunakan ketika Anda membuat tabel asing OSS.

  • Jika parameter prefix digunakan, nama objek diawali dengan nilai parameter yang ditentukan.

  • Jika parameter dir digunakan, nama objek diawali dengan nama tabel asing OSS.

{timestamp}

Waktu ketika data diekspor. Format: YYYYMMDDHH24MISS.

{random_key}

Nilai kunci acak.

{seg}{segment_id}

Kombinasi string seg dan ID node komputasi dari mana objek diekspor. Misalnya, seg1 menunjukkan bahwa objek diekspor dari node komputasi 1.

{fileno}

Nomor segmen objek. Nilai parameter ini dimulai dari 0.

{ext}

Format objek yang diekspor. Nilai valid:

  • .csv

  • .txt

  • .orc

[.gz]

Menunjukkan bahwa objek yang diekspor dikompresi menggunakan GZIP.

Contoh:

  • Ekspor data ke objek CSV yang dikompresi GZIP dan gunakan parameter dir untuk menentukan direktori objek.

    CREATE FOREIGN TABLE fdw_t_out_1(a int)
    SERVER oss_serv
    OPTIONS (format 'csv', filetype 'gzip', dir 'test/');

    Objek diberi nama dalam format berikut:

    fdw_t_out_1_20200805110207_1718599661_seg-1_0.csv.gz
  • Ekspor data ke objek ORC dan gunakan parameter prefix untuk menentukan awalan jalur objek.

    CREATE FOREIGN TABLE fdw_t_out_2(a int)
    SERVER oss_serv
    OPTIONS (format 'orc', prefix 'test/my_orc_test');

    Objek diberi nama dalam format berikut:

    my_orc_test_20200924153043_1737154096_seg0_0.orc

Referensi