全部产品
Search
文档中心

AnalyticDB:CREATE EXTERNAL TABLE

更新时间:Nov 10, 2025

AnalyticDB for MySQL mendukung pembuatan berbagai jenis tabel eksternal, seperti tabel eksternal OSS, RDS MySQL, MongoDB, Tablestore, dan MaxCompute.

Prasyarat

  • Kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse telah dibuat.

  • Versi kernel kluster adalah 3.1.8.0 atau lebih baru.

    Catatan

    Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.

  • Database eksternal harus dibuat terlebih dahulu. Untuk informasi selengkapnya, lihat CREATE EXTERNAL DATABASE.

Catatan penggunaan

Pembuatan lintas akun hanya didukung untuk tabel eksternal OSS.

Tabel eksternal OSS

Penting
  • Bucket OSS harus berada di wilayah yang sama dengan kluster AnalyticDB for MySQL.

  • Saat membuat tabel eksternal Hudi, Iceberg, atau Paimon, versi kernel kluster harus memenuhi persyaratan berikut:

    • Tabel eksternal Hudi: Versi kernel kluster harus 3.1.9.2 atau lebih baru.

    • Tabel eksternal Iceberg: Versi kernel kluster harus 3.2.3.0 atau lebih baru.

    • Tabel eksternal Paimon: Versi kernel kluster harus 3.2.4.0 atau lebih baru.

    Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.

  • Setelah membuat tabel eksternal OSS terpartisi, Anda harus menjalankan pernyataan MSCK REPAIR TABLE untuk menyinkronkan partisi tabel eksternal tersebut. Jika tidak, Anda tidak dapat mengkueri data dari tabel eksternal tersebut.

  • Untuk membuat tabel eksternal OSS lintas akun Alibaba Cloud, Anda harus menambahkan parameter yang diperlukan saat membuat database eksternal. Untuk informasi selengkapnya, lihat CREATE EXTERNAL DATABASE.

Sintaksis

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
[PARTITIONED BY (column_name column_type[, …])]
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS {TEXTFILE|ORC|PARQUET|JSON|RCFIL|HUDI|ICEBERG|PAIMON}
LOCATION 'OSS_LOCATION';
[TBLPROPERTIES (
 'type' = 'cow|mor'
 'auto.create.location' = 'true|false')
 'metadata_location' = 'METADATA_LOCATION')]

Parameter

Parameter

Wajib

Deskripsi

table_name (column_name column_type[, …])

Ya

Nama dan skema tabel.

Untuk informasi tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan.

Penting

Saat membuat tabel eksternal Paimon, nama tabel, nama kolom, dan tipe data kolom harus sama dengan yang ada di file Paimon. Nama tabel dan nama kolom harus menggunakan huruf kecil.

PARTITIONED BY (column_name column_type[, …])

Tidak

Saat membuat tabel eksternal terpartisi, Anda harus mengonfigurasi parameter ini untuk menentukan kolom kunci partisi. Jika Anda menentukan beberapa kolom kunci partisi, tabel partisi multi-level akan dibuat.

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

Ya

Pemisah kolom. Anda dapat menentukan simbol apa pun, tetapi harus sama dengan pemisah dalam file. Topik ini menggunakan koma (,) sebagai contoh.

Penting

Parameter ini hanya didukung ketika STORED AS TEXTFILE atau STORED AS JSON ditentukan.

STORED AS {TEXTFILE|ORC|PARQUET|JSON|RCFILE|HUDI|ICEBERG}

Ya

Format file.

Jika file berformat .txt atau .csv, atur parameter ini menjadi STORED AS TEXTFILE.

File dalam format PARQUET mendukung tipe data STRUCT dan STRUCT bersarang.

Penting

Hanya kluster dengan versi kernel 3.1.8.0 atau lebih baru yang mendukung file PARQUET yang berisi tipe data STRUCT.

LOCATION

Ya

Jalur file atau folder OSS.

Saat menentukan jalur folder OSS, ikuti aturan berikut. Jika tidak, kueri mungkin gagal atau mengembalikan hasil yang tidak normal.

  • Jalur folder harus diakhiri dengan garis miring (/).

  • Semua file dalam folder harus memiliki format yang sama.

  • Semua file dalam folder harus memiliki jumlah bidang, urutan bidang, dan tipe data bidang yang sama.

Saat membuat tabel eksternal terpartisi, atur LOCATION ke direktori induk partisi. Misalnya, jalur file OSS adalah oss://testBucketname/testfolder/p1=2023-06-13/data.csv. Dalam kasus ini, Anda harus mengatur LOCATION 'oss://testBucketname/testfolder/' untuk membuat tabel eksternal terpartisi yang menggunakan p1 sebagai kolom kunci partisi.

Penting
  • Saat membuat tabel eksternal Hudi, pastikan file metadata Hudi, yaitu file .hoodies, ada di jalur yang ditentukan.

  • Jika Anda mengatur auto.create.location=true, folder OSS akan dibuat secara otomatis jika jalur yang ditentukan oleh LOCATION tidak ada saat membuat tabel eksternal terpartisi.

type

Tidak

Jenis tabel eksternal Hudi. Nilai yang valid:

  • COW (default): Nilai ini cocok untuk skenario yang memerlukan efisiensi baca tinggi.

  • MOR: Nilai ini cocok untuk skenario yang memerlukan efisiensi tulis tinggi.

Penting

Parameter ini wajib hanya ketika STORED AS HUDI ditentukan.

auto.create.location

Tidak

Menentukan apakah akan membuat jalur file atau folder OSS secara otomatis. Nilai yang valid:

  • true: Ya.

  • false (default): Tidak.

Penting

Parameter ini hanya berlaku saat membuat tabel eksternal terpartisi.

metadata_location

Tidak

Jalur file metadata untuk tabel eksternal Iceberg.

Penting
  • Parameter ini wajib hanya ketika STORED AS ICEBERG ditentukan.

  • Gunakan file metadata terbaru untuk memastikan Anda dapat mengkueri data terbaru.

Contoh

Contoh 1: Membuat tabel eksternal non-partisi

  • Atur format penyimpanan file ke TEXTFILE.

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest1
    (id INT,
    name STRING,
    age INT,
    city STRING)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
    STORED AS TEXTFILE
    LOCATION  'oss://testBucketName/osstest/p1=hangzhou/p2=2023-06-13/data.csv';
  • Atur format penyimpanan file ke HUDI.

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest2
    (id INT,
    name STRING,
    age INT,
    city STRING)
    STORED AS HUDI
    LOCATION  'oss://testBucketName/osstest/test'
    TBLPROPERTIES ('type' = 'cow');
  • Atur format penyimpanan file ke PARQUET.

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest3
    (
    A STRUCT < var1:STRING, var2:INT >) 
    STORED AS PARQUET 
    LOCATION 'oss://testBucketName/osstest/Parquet';
  • Atur format penyimpanan file ke ICEBERG.

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest4
    (
    user_id BIGINT)  
    STORED AS ICEBERG  
    LOCATION 'oss://testBucketName/osstest/no_partition_table/' 
    TBLPROPERTIES (metadata_location='oss://testBucketName/osstest/no_partition_table/metadata/00000-a32d6136-8490-4ad2-ada3-fe2f7204199f.metadata.json');
  • Atur format penyimpanan file ke PAIMON.

    CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest5
    (
    a INT,
    b BIGINT,
    aCa STRING, 
    d VARCHAR(1))
    STORED AS PAIMON 
    LOCATION 'oss://testBucketName/osstest/default.db/t1/';

Contoh 2: Membuat tabel eksternal terpartisi

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest6
(id int,
name string,
age int,
city string)
PARTITIONED BY (p2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
STORED AS TEXTFILE
LOCATION  'oss://testBucketName/osstest/p1=hangzhou/';

Contoh 3: Membuat tabel eksternal terpartisi multi-level

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.osstest7
(id int,
name string,
age int,
city string)
PARTITIONED BY (p1 string,p2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
STORED AS TEXTFILE
LOCATION  'oss://testBucketName/osstest/';

Tabel eksternal RDS MySQL

Penting
  • Untuk membuat tabel eksternal ApsaraDB RDS for MySQL, Anda harus terlebih dahulu mengaktifkan antarmuka jaringan elastis (ENI) pada halaman Cluster Information di Konsol AnalyticDB for MySQL. Saat Anda mengaktifkan atau menonaktifkan ENI, koneksi database mungkin terputus selama sekitar 2 menit. Selama periode ini, Anda tidak dapat melakukan operasi baca atau tulis. Aktifkan atau nonaktifkan ENI dengan hati-hati.

  • Instans RDS MySQL harus berada di virtual private cloud (VPC) yang sama dengan kluster AnalyticDB for MySQL.

Sintaksis

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='MYSQL'
TABLE_PROPERTIES='{  
	"url":"mysql_vpc_address",  
	"tablename":"mysql_table_name",  
	"username":"mysql_user_name",  
	"password":"mysql_user_password"
	[,"charset":"{gbk|utf8|utf8mb4}"]
  }';

Parameter

Parameter

Wajib

Deskripsi

table_name (column_name column_type[, …])

Ya

Nama dan skema tabel.

Untuk informasi tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan.

ENGINE='MYSQL'

Ya

Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data ke RDS MySQL, atur nilainya menjadi MYSQL.

TABLE_PROPERTIES

Ya

Properti tabel eksternal.

url

Ya

Titik akhir internal, nomor port, dan nama database instans RDS MySQL. Untuk informasi tentang cara mendapatkan titik akhir internal instans RDS, lihat Melihat atau mengubah titik akhir internal dan publik serta port.

tablename

Ya

Nama tabel di RDS MySQL.

username

Ya

Akun database RDS MySQL.

password

Ya

Kata sandi akun database RDS MySQL.

charset

Tidak

Set karakter tabel eksternal MySQL. Nilai yang valid:

  • gbk

  • utf8 (default)

  • utf8mb4

Contoh

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.mysqltest (
	id int,
	name varchar(1023),
	age int
 ) ENGINE = 'MYSQL'
 TABLE_PROPERTIES = '{
   "url":"jdbc:mysql://rm-bp1gx6********.mysql.rds.aliyuncs.com:3306/test_adb",
   "tablename":"person",
   "username":"testUserName",
   "password":"testUserPassword",
   "charset":"utf8"
}';

Tabel eksternal MongoDB

Penting
  • Sebelum membuat tabel eksternal MongoDB, Anda harus mengaktifkan antarmuka jaringan elastis (ENI) pada halaman Cluster Information di Konsol AnalyticDB for MySQL. Saat Anda mengaktifkan atau menonaktifkan ENI, koneksi database mungkin terputus selama sekitar 2 menit. Selama periode ini, Anda tidak dapat melakukan operasi baca atau tulis. Aktifkan atau nonaktifkan ENI dengan hati-hati.

  • Instans MongoDB harus berada di VPC yang sama dengan kluster AnalyticDB for MySQL.

Sintaksis

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='MONGODB'
TABLE_PROPERTIES = '{
	"mapped_name":"table",
  "location":"location",
  "username":"user",
  "password":"password",
}';

Parameter

Parameter

Wajib

Deskripsi

table_name (column_name column_type[, …])

Ya

Nama dan skema tabel.

Untuk informasi tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan.

ENGINE='MYSQL'

Ya

Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data ke MongoDB, atur nilainya menjadi MONGODB.

TABLE_PROPERTIES

Ya

Properti tabel eksternal.

mapped_name

Ya

Nama koleksi MongoDB.

location

Ya

Titik akhir VPC instans ApsaraDB for MongoDB.

username

Ya

Akun database instans MongoDB.

Catatan

MongoDB memverifikasi akun database dan kata sandi di database tujuan. Gunakan akun database yang ditentukan dalam titik akhir VPC instans MongoDB. Jika Anda memiliki pertanyaan, hubungi dukungan teknis.

password

Ya

Kata sandi akun database MongoDB.

Contoh

CREATE EXTERNAL TABLE adb_external_demo.mongodbtest (
  id int,
  name string,
  age int
) ENGINE = 'MONGODB' TABLE_PROPERTIES ='{
"mapped_name":"person",
"location":"mongodb://testuser:****@dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717,dds-bp113d414bca8****.mongodb.rds.aliyuncs.com:3717/test_mongodb",
"username":"testuser",
"password":"password",
}';

Tabel eksternal Tablestore

Penting

Jika instans Tablestore dilampirkan ke VPC, instans tersebut harus berada di VPC yang sama dengan kluster AnalyticDB for MySQL.

Sintaksis

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='OTS'
TABLE_PROPERTIES = '{
	"mapped_name":"table_name",
	"location":"tablestore_vpc_address"
}';

Parameter

Parameter

Wajib

Deskripsi

table_name (column_name column_type[, …])

Ya

Nama dan skema tabel. Untuk informasi tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan.

ENGINE='OTS’

Ya

Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data ke Tablestore, atur nilainya menjadi OTS.

mapped_name

Ya

Nama tabel di instans Tablestore. Anda dapat masuk ke Konsol Tablestore dan melihat nama tabel di halaman Manajemen Instans.

location

Ya

Titik akhir VPC instans Tablestore. Anda dapat masuk ke Konsol Tablestore dan melihat titik akhir VPC instans di halaman Manajemen Instans.

Contoh

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.otstest (
	id int,
	name string,
	age int
) ENGINE = 'OTS' 
TABLE_PROPERTIES = '{
	"mapped_name":"person",
	"location":"https://w0****la.cn-hangzhou.vpc.tablestore.aliyuncs.com"
}';

Tabel eksternal MaxCompute

Penting
  • Proyek MaxCompute harus berada di wilayah yang sama dengan kluster AnalyticDB for MySQL.

  • Untuk membuat tabel eksternal MaxCompute secara batch, lihat IMPORT FOREIGN SCHEMA.

Sintaksis

CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='ODPS'
TABLE_PROPERTIES='{
	"endpoint":"endpoint",
	"accessid":"accesskey_id",
	"accesskey":"accesskey_secret",
	["partition_column":"partition_column"],
	"project_name":"project_name",
	"table_name":"table_name"
}'; 

Parameter

Parameter

Wajib

Deskripsi

table_name (column_name column_type[, …])

Ya

Nama dan skema tabel. Skema tabel harus mencakup kolom kunci partisi.

table_name dan column_name: nama tabel dan nama kolom. Untuk informasi tentang konvensi penamaan tabel dan kolom, lihat Konvensi penamaan.

column_type: tipe data dasar MaxCompute dan tipe data kompleks (ARRAY, MAP, dan STRUCT) didukung.

Catatan

Tipe data kompleks MaxCompute didukung pada versi 3.2.1.0 dan lebih baru. Untuk informasi selengkapnya tentang tipe data kompleks, lihat Tipe data kompleks.

Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.

ENGINE='ODPS'

Ya

Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data ke MaxCompute, atur nilainya menjadi ODPS.

endpoint

Ya

Endpoint MaxCompute.

Catatan

Anda hanya dapat mengakses MaxCompute melalui Endpoint VPC. Untuk informasi tentang cara melihat Endpoint MaxCompute, lihat Endpoint.

accessid

Ya

ID AccessKey akun Alibaba Cloud atau Pengguna Resource Access Management (RAM) yang memiliki izin untuk mengakses MaxCompute.

Untuk informasi tentang cara mendapatkan ID AccessKey dan Rahasia AccessKey, lihat Akun dan izin.

accesskey

Ya

Rahasia AccessKey akun Alibaba Cloud atau Pengguna RAM yang memiliki izin untuk mengakses MaxCompute.

Untuk informasi tentang cara mendapatkan ID AccessKey dan Rahasia AccessKey, lihat Akun dan izin.

partition_column

Tidak

Kolom kunci partisi. Parameter ini wajib jika tabel MaxCompute adalah tabel terpartisi.

project_name

Ya

Nama proyek MaxCompute.

table_name

Ya

Nama tabel MaxCompute.

Contoh

CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_demo.mctest (
	id int,
	name varchar(1023),
	age int,
	dt string
) ENGINE='ODPS'
TABLE_PROPERTIES='{
	"accessid":"LTAI****************",
	"endpoint":"http://service.cn-hangzhou.maxcompute.aliyun.com/api",
	"accesskey":"yourAccessKeySecret",
	"partition_column":"dt",
	"project_name":"test_adb",
	"table_name":"person"
}';

Referensi