全部产品
Search
文档中心

AnalyticDB:CREATE EXTERNAL TABLE

更新时间:Feb 27, 2026

AnalyticDB for MySQL mendukung pembuatan tabel eksternal untuk OSS, ApsaraDB RDS for MySQL, MongoDB, Tablestore, dan MaxCompute.

Prasyarat

Catatan penggunaan

Anda hanya dapat membuat tabel eksternal OSS lintas akun.

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 memerlukan versi kernel 3.2.3.0 atau lebih baru.

    • Tabel eksternal Paimon memerlukan versi kernel 3.2.6.1 atau lebih baru.

    Untuk melihat dan memperbarui versi minor, buka bagian Configuration Information pada halaman Cluster Information di AnalyticDB for MySQL console.

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

  • Untuk membuat tabel eksternal OSS lintas akun, tentukan 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|RCFILE|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

Definisikan nama tabel dan skema tabel.

Untuk konvensi penamaan nama tabel dan kolom, lihat Batasan penamaan.

Penting

Saat membuat tabel eksternal Paimon, nama tabel, nama kolom, dan tipe data kolom harus konsisten dengan file Paimon. Jika skema tabel (nama atau tipe field) tidak konsisten dengan Paimon, skema tabel Paimon yang berlaku.

PARTITIONED BY (column_name column_type[, …])

Tidak

Saat membuat tabel eksternal partisi, konfigurasikan parameter ini untuk menentukan kolom kunci partisi. Menentukan beberapa kolom kunci partisi akan membuat tabel partisi multi-level.

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

Ya

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

Penting

Parameter ini hanya didukung untuk STORED AS TEXTFILE dan STORED AS JSON.

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

Ya

Tentukan format file.

Jika file berformat .txt atau .csv, atur ke STORED AS TEXTFILE.

File format PARQUET mendukung tipe data STRUCT dan nesting.

Penting

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

LOCATION

Ya

Tentukan path file atau direktori OSS.

Saat menentukan path direktori OSS, ikuti aturan berikut. Jika tidak, kueri mungkin gagal atau mengembalikan hasil abnormal.

  • Path direktori harus diakhiri dengan garis miring maju (/).

  • Semua file dalam direktori harus memiliki format file yang sama.

  • Semua file dalam direktori harus memiliki jumlah, urutan, dan tipe field yang sama.

Saat membuat tabel eksternal partisi, tentukan LOCATION sebagai direktori induk partisi. Misalnya, jika path file OSS adalah oss://testBucketname/testfolder/p1=2023-06-13/data.csv, tentukan LOCATION 'oss://testBucketname/testfolder/' untuk membuat tabel eksternal partisi dengan `p1` sebagai kolom kunci partisi.

Penting
  • Saat membuat tabel eksternal Hudi, pastikan file metadata Hudi, yaitu file .hoodies, ada di path ini.

  • Jika Anda telah mengonfigurasi auto.create.location=true, direktori OSS akan dibuat secara otomatis jika path LOCATION yang ditentukan saat membuat tabel eksternal partisi tidak ada.

type

Tidak

Tipe tabel eksternal Hudi. Nilai yang valid:

  • COW (default): Cocok untuk skenario dengan kebutuhan efisiensi baca tinggi.

  • MOR: Cocok untuk skenario dengan kebutuhan efisiensi tulis tinggi.

Penting

Parameter ini wajib hanya ketika STORED AS HUDI.

auto.create.location

Tidak

Buat path file atau direktori OSS secara otomatis. Nilai yang valid:

  • true: Ya.

  • false (default): Tidak.

Penting

Parameter ini hanya berlaku saat membuat tabel eksternal partisi.

metadata_location

Tidak

Tentukan path file metadata untuk tabel eksternal Iceberg.

Penting
  • Parameter ini wajib hanya ketika STORED AS ICEBERG.

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

Contoh

Contoh 1: Buat tabel eksternal non-partisi

  • Tentukan format penyimpanan file sebagai 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';
  • Tentukan format penyimpanan file sebagai 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');
  • Tentukan format penyimpanan file sebagai 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';
  • Tentukan format penyimpanan file sebagai 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');
  • Tentukan format penyimpanan file sebagai 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: Buat tabel eksternal partisi

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: Buat tabel eksternal partisi 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 ApsaraDB RDS for MySQL

Penting
  • Sebelum membuat tabel eksternal ApsaraDB RDS for MySQL, aktifkan ENI pada halaman Cluster Information di AnalyticDB for MySQL console. Mengaktifkan atau menonaktifkan ENI akan mengganggu koneksi database selama sekitar 2 menit dan mencegah operasi baca dan tulis. Evaluasi dampaknya secara hati-hati sebelum mengaktifkan atau menonaktifkan ENI.

  • Instans ApsaraDB RDS for MySQL 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='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

Definisikan nama tabel dan skema tabel.

Untuk konvensi penamaan nama tabel dan kolom, lihat Batasan penamaan.

ENGINE='MYSQL'

Ya

Mesin penyimpanan tabel eksternal. Saat membaca dan menulis data RDS MySQL, nilainya adalah MYSQL.

TABLE_PROPERTIES

Ya

Properti Appearance.

url

Ya

Alamat jaringan internal, nomor port, dan nama database instans RDS MySQL. Untuk informasi cara mendapatkan alamat jaringan internal RDS, lihat Lihat atau ubah alamat dan port jaringan internal serta publik.

tablename

Ya

Nama tabel RDS MySQL.

username

Ya

Akun database instans RDS MySQL.

password

Ya

Kata sandi akun database instans RDS MySQL.

charset

Tidak

Set karakter untuk 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 ApsaraDB for MongoDB

Penting
  • Sebelum membuat tabel eksternal MongoDB, aktifkan ENI pada halaman Cluster Information di AnalyticDB for MySQL console. Mengaktifkan atau menonaktifkan ENI akan mengganggu koneksi database selama sekitar 2 menit dan mencegah operasi baca dan tulis. Evaluasi dampaknya secara hati-hati sebelum mengaktifkan atau menonaktifkan ENI.

  • 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

Definisikan nama tabel dan skema tabel.

Untuk konvensi penamaan nama tabel dan kolom, lihat Batasan penamaan.

ENGINE='MYSQL'

Ya

Mesin penyimpanan tabel eksternal. Saat membaca dan menulis data MongoDB, nilainya adalah MONGODB.

TABLE_PROPERTIES

Ya

Properti Appearance

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 terikat ke VPC, VPC tersebut harus sama dengan VPC tempat kluster AnalyticDB for MySQL berada.

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

Definisikan nama tabel dan skema tabel. Untuk konvensi penamaan nama tabel dan kolom, lihat Batasan penamaan.

ENGINE='OTS’

Ya

Mesin penyimpanan tabel eksternal. Saat membaca dan menulis data Tablestore, nilainya adalah OTS.

mapped_name

Ya

Nama tabel dalam instans Tablestore. Login ke Tablestore console. Di halaman Instance Management, lihat nama tabel instans Tablestore.

location

Ya

Titik akhir VPC instans Tablestore. Login ke Tablestore console. Di halaman Instance Management, lihat titik akhir VPC instans tersebut.

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 informasi tentang cara 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

Definisikan nama tabel dan skema tabel. Skema tabel harus mencakup kolom kunci partisi.

table_name dan column_name: Nama tabel dan nama kolom. Untuk konvensi penamaan nama tabel dan kolom, lihat Batasan penamaan.

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

Catatan

Versi 3.2.1.0 dan lebih baru mendukung tipe data kompleks MaxCompute. Untuk detail tentang tipe data kompleks, lihat Tipe data kompleks.

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

ENGINE='ODPS'

Ya

Mesin penyimpanan tabel eksternal. Saat membaca dan menulis data MaxCompute, nilainya adalah ODPS.

endpoint

Ya

Titik akhir Proyek MaxCompute.

Catatan

Hanya mendukung akses MaxCompute melalui titik akhir VPC. Untuk informasi cara melihat Titik Akhir MaxCompute, lihat Endpoint.

accessid

Ya

ID AccessKey dari akun Alibaba Cloud atau pengguna Resource Access Management (RAM) dengan izin akses MaxCompute.

Untuk informasi cara mendapatkan ID AccessKey dan Secret AccessKey, lihat Akun dan Izin.

accesskey

Ya

Secret AccessKey dari akun Alibaba Cloud atau pengguna Resource Access Management (RAM) dengan izin akses MaxCompute.

Untuk informasi cara mendapatkan ID AccessKey dan Secret AccessKey, lihat Akun dan Izin.

partition_column

Tidak

Kolom kunci partisi. Konfigurasikan parameter ini saat tabel MaxCompute adalah tabel partisi.

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