All Products
Search
Document Center

AnalyticDB:CREATE EXTERNAL TABLE

Last Updated:Apr 02, 2026

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

Prasyarat

Catatan penggunaan

Hanya tabel eksternal OSS yang mendukung pembuatan lintas akun.

Tabel eksternal OSS

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

  • Untuk membuat tabel eksternal Hudi, Iceberg, atau Paimon, kluster Anda harus memenuhi persyaratan versi minor berikut:

    • Tabel eksternal Hudi: versi minor kluster 3.1.9.2 atau lebih baru.

    • Tabel eksternal Iceberg: versi minor kluster 3.2.3.0 atau lebih baru.

    • Tabel eksternal Paimon: versi minor kluster 3.2.6.1 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, jalankan pernyataan MSCK REPAIR TABLE untuk menyinkronkan partisi. Jika tidak, Anda tidak dapat melakukan kueri data dari tabel eksternal tersebut.

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

Menentukan 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. Jika skema tabel (nama atau tipe bidang) tidak sesuai dengan skema Paimon, maka skema Paimon yang berlaku.

PARTITIONED BY (column_name column_type[, …])

Tidak

Menentukan kolom kunci partisi. Parameter ini wajib saat membuat tabel eksternal terpartisi. Untuk membuat tabel partisi multi-level, tentukan beberapa kolom kunci partisi.

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

Ya

Menentukan pemisah kolom. Anda dapat menentukan karakter apa pun, tetapi harus sesuai dengan pemisah di file sumber. Topik ini menggunakan koma (,) sebagai contoh.

Penting

Parameter ini hanya didukung saat Anda menentukan STORED AS TEXTFILE atau STORED AS JSON.

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

Ya

Menentukan format file.

Jika file dalam format .txt atau .csv, atur parameter ini ke STORED AS TEXTFILE.

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

Penting

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

LOCATION

Ya

Menentukan path file atau direktori OSS.

Saat menentukan path direktori OSS, ikuti aturan berikut. Jika tidak, kueri dapat gagal atau menghasilkan hasil yang tidak diharapkan.

  • Path direktori diakhiri dengan /.

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

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

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

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

  • Jika Anda mengatur auto.create.location=true dan path yang ditentukan oleh LOCATION tidak ada saat membuat tabel eksternal terpartisi, sistem akan secara otomatis membuat direktori OSS.

type

Tidak

Tipe tabel eksternal Hudi. Nilai yang valid:

  • COW (default): Copy on Write. Tipe ini cocok untuk beban kerja yang dominan membaca.

  • MOR: Merge on Read. Tipe ini cocok untuk beban kerja yang dominan menulis.

Penting

Parameter ini wajib hanya saat STORED AS HUDI ditentukan.

auto.create.location

Tidak

Menentukan apakah path file atau direktori OSS dibuat secara otomatis. Nilai yang valid:

  • true: Path dibuat secara otomatis.

  • false (default): Path tidak dibuat secara otomatis.

Penting

Parameter ini hanya berlaku saat membuat tabel eksternal terpartisi.

metadata_location

Tidak

Menentukan path file metadata untuk tabel eksternal Iceberg.

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

  • Gunakan file metadata terbaru untuk memastikan Anda melakukan kueri terhadap 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 P*****.

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

Penting
  • Sebelum membuat tabel eksternal ApsaraDB RDS for MySQL, buka Konsol AnalyticDB for MySQL dan aktifkan sakelar antarmuka jaringan elastis (ENI) pada halaman Cluster Information. Mengaktifkan atau menonaktifkan jaringan ENI akan mengganggu koneksi database selama sekitar 2 menit. Selama periode ini, Anda tidak dapat membaca atau menulis data ke database. Evaluasi dampaknya secara hati-hati sebelum mengaktifkan atau menonaktifkan jaringan ENI.

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

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

Menentukan nama dan struktur tabel.

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

ENGINE='MYSQL'

Ya

Mesin penyimpanan tabel eksternal. Untuk membaca atau menulis data ke database ApsaraDB RDS for MySQL, atur parameter ini ke MYSQL.

TABLE_PROPERTIES

Ya

Properti tabel eksternal.

url

Ya

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

tablename

Ya

Nama tabel di database ApsaraDB RDS for MySQL.

username

Ya

Username untuk database ApsaraDB RDS for MySQL.

password

Ya

Password untuk akun database ApsaraDB RDS for 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 ApsaraDB for MongoDB

Penting
  • Sebelum membuat tabel eksternal ApsaraDB for MongoDB, aktifkan sakelar antarmuka jaringan elastis (ENI) pada halaman Cluster Information di Konsol AnalyticDB for MySQL. Mengaktifkan atau menonaktifkan jaringan ENI akan mengganggu koneksi database selama sekitar 2 menit. Selama periode ini, Anda tidak dapat membaca atau menulis ke database. Evaluasi dampaknya secara hati-hati sebelum mengaktifkan atau menonaktifkan jaringan ENI.

  • Instans tabel eksternal ApsaraDB for MongoDB 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='MONGODB'
TABLE_PROPERTIES = '{
	"mapped_name":"table",
  "location":"location",
  "username":"user",
  "password":"password",
}';

Parameter

Parameter

Wajib

Deskripsi

table_name (column_name column_type[, …])

Ya

Menentukan nama dan struktur tabel.

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

ENGINE='MONGODB'

Ya

Mesin penyimpanan untuk tabel eksternal. Untuk membaca dan menulis data ke ApsaraDB for MongoDB, atur parameter ini ke MONGODB.

TABLE_PROPERTIES

Ya

Properti tabel eksternal.

Ya

Nama koleksi ApsaraDB for MongoDB.

Ya

Ya

Catatan

Ya

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 dikaitkan dengan virtual private cloud (VPC), VPC yang dikaitkan harus sama dengan VPC tempat kluster AnalyticDB for MySQL berada.

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

Menentukan nama dan struktur tabel. Untuk konvensi penamaan nama tabel dan kolom, lihat Konvensi penamaan.

ENGINE='OTS’

Ya

Mesin penyimpanan untuk tabel eksternal. Atur parameter ini ke OTS untuk membaca dan menulis data ke Tablestore.

mapped_name

Ya

Nama tabel di instans Tablestore. Login ke Konsol Tablestore dan temukan nama tabel di halaman Instance Management.

location

Ya

Titik akhir VPC instans Tablestore. Login ke Konsol Tablestore dan temukan titik akhir VPC instans di 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 dan kluster AnalyticDB for MySQL harus berada di wilayah yang sama.

  • Untuk membuat tabel eksternal MaxCompute secara massal, 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

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

table_name dan column_name: Nama tabel dan kolom. Untuk informasi lebih lanjut tentang konvensi penamaan, lihat Konvensi penamaan.

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

Catatan

Tipe data kompleks MaxCompute didukung mulai versi minor 3.2.1.0. Untuk informasi lebih lanjut 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 untuk tabel eksternal. Atur ke ODPS untuk membaca atau menulis data ke MaxCompute.

endpoint

Ya

Titik akhir MaxCompute.

Catatan

Anda hanya dapat mengakses MaxCompute melalui titik akhir virtual private cloud (VPC). Untuk informasi lebih lanjut tentang cara melihat titik akhir MaxCompute, lihat Endpoints.

accessid

Ya

ID AccessKey Akun Alibaba Cloud Anda atau Pengguna RAM yang memiliki izin untuk mengakses MaxCompute.

Untuk informasi lebih lanjut tentang cara mendapatkan ID AccessKey dan AccessKey Secret, lihat Akun dan izin.

accesskey

Ya

AccessKey Secret Akun Alibaba Cloud Anda atau Pengguna RAM yang memiliki izin untuk mengakses MaxCompute.

Untuk informasi lebih lanjut tentang cara mendapatkan ID AccessKey dan AccessKey Secret, 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"
}';

Dokumen terkait