All Products
Search
Document Center

AnalyticDB:CREATE EXTERNAL TABLE

Last Updated:Aug 01, 2026

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

Prasyarat

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, buka bagian Configuration Information pada halaman Cluster Information di Konsol AnalyticDB for MySQL.

  • Setelah membuat tabel eksternal OSS terpartisi, Anda harus menjalankan pernyataan MSCK REPAIR TABLE untuk menyinkronkan partisi tabel eksternal tersebut. Jika tidak, Anda tidak dapat melakukan kueri 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.

Sintaks

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 mengenai 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 ke STORED AS TEXTFILE.

File dalam format PARQUET mendukung tipe data STRUCT dan nested STRUCTs.

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 menghasilkan hasil abnormal.

  • 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 jalur file atau folder OSS dibuat 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 melakukan kueri 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 elastic network interface (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.

Sintaks

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 mengenai konvensi penamaan tabel dan kolom, lihat Konvensi penamaan.

ENGINE='MYSQL'

Ya

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

TABLE_PROPERTIES

Ya

Properti tabel eksternal.

url

Ya

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

tablename

Ya

Nama tabel di RDS MySQL.

username

Ya

Akun database RDS MySQL.

password

Ya

Password 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 elastic network interface (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.

Sintaks

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 mengenai konvensi penamaan tabel dan kolom, lihat Konvensi penamaan.

ENGINE='MYSQL'

Ya

Mesin penyimpanan tabel eksternal. Untuk membaca dan menulis data dari MongoDB, atur nilainya ke 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 ApsaraDB for MongoDB.

Catatan

ApsaraDB for MongoDB memverifikasi akun dan password terhadap database tujuan. Gunakan akun dari database yang ditentukan dalam titik akhir vpc. Jika Anda mengalami masalah, hubungi dukungan teknis.

password

Ya

Password untuk akun database ApsaraDB for 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 disambungkan ke VPC, instans tersebut harus berada di VPC yang sama dengan kluster AnalyticDB for MySQL.

Sintaks

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 mengenai konvensi penamaan tabel dan kolom, lihat Konvensi penamaan.

ENGINE='OTS’

Ya

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

mapped_name

Ya

Nama tabel di instans Tablestore. Anda dapat login ke Konsol Tablestore dan melihat nama tabel pada halaman Instance Management.

location

Ya

Titik akhir VPC instans Tablestore. Anda dapat login ke Konsol Tablestore dan melihat titik akhir VPC instans pada halaman Instance Management.

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.

Sintaks

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 mengenai konvensi penamaan tabel dan kolom, lihat Konvensi penamaan.

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

Catatan

Tipe data kompleks MaxCompute didukung mulai 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, login 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 dari MaxCompute, atur nilainya ke ODPS.

endpoint

Ya

Endpoint MaxCompute.

Catatan

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

accessid

Ya

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

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

accesskey

Ya

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

Untuk informasi 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.

Penting

Saat membuat tabel eksternal terpartisi MaxCompute, jika kolom partisi bukan kolom terakhir dalam daftar kolom, sistem secara otomatis memindahkan kolom partisi ke akhir daftar kolom.

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