View a markdown version of this page

ALTER TABLE - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

ALTER TABLE

Perintah ini mengubah definisi tabel Amazon Redshift atau tabel eksternal Amazon Redshift Spectrum. Perintah ini memperbarui nilai dan properti yang ditetapkan oleh CREATE TABLE atauCREATE EXTERNAL TABLE. Anda dapat menggunakan ALTER TABLE pada tampilan untuk keamanan tingkat baris (RLS).

Anda tidak dapat menjalankan ALTER TABLE pada tabel eksternal dalam blok transaksi (BEGIN... AKHIR). Untuk informasi lebih lanjut tentang transaksi, lihatTingkat isolasi di Amazon Redshift.

ALTER TABLE mengunci tabel untuk operasi baca dan tulis sampai transaksi yang menyertakan operasi ALTER TABLE selesai, kecuali dinyatakan secara khusus dalam dokumentasi bahwa Anda dapat menanyakan data atau melakukan operasi lain pada tabel saat diubah.

Hak istimewa yang diperlukan

Pengguna yang mengubah tabel membutuhkan hak istimewa yang tepat agar perintah berhasil. Tergantung pada perintah ALTER TABLE, salah satu hak istimewa berikut diperlukan.

  • Superuser

  • Pengguna dengan hak istimewa ALTER TABLE

  • Pemilik tabel dengan hak istimewa USAGE pada skema

Sintaksis

ALTER TABLE table_name { ADD table_constraint | DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ] | OWNER TO new_owner | RENAME TO new_name | RENAME COLUMN column_name TO new_name | ALTER COLUMN column_name TYPE updated_varchar_data_type_size | ALTER COLUMN column_name ENCODE new_encode_type | ALTER COLUMN column_name ENCODE encode_type, | ALTER COLUMN column_name ENCODE encode_type, .....; | ALTER DISTKEY column_name | ALTER DISTSTYLE ALL | ALTER DISTSTYLE EVEN | ALTER DISTSTYLE KEY DISTKEY column_name | ALTER DISTSTYLE AUTO | ALTER [COMPOUND] SORTKEY ( column_name [,...] ) | ALTER SORTKEY AUTO | ALTER SORTKEY NONE | ALTER ENCODE AUTO | ADD [ COLUMN ] column_name column_type [ DEFAULT default_expr ] [ ENCODE encoding ] [ NOT NULL | NULL ] [ COLLATE { CASE_SENSITIVE | CS | CASE_INSENSITIVE | CI } ] | | DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] | ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ FOR DATASHARES ] | MASKING { ON | OFF } FOR DATASHARES } where table_constraint is: [ CONSTRAINT constraint_name ] { UNIQUE ( column_name [, ... ] ) | PRIMARY KEY ( column_name [, ... ] ) | FOREIGN KEY (column_name [, ... ] ) REFERENCES reftable [ ( refcolumn ) ]} The following options apply only to external tables: SET LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' } | SET FILE FORMAT format | | SET TABLE PROPERTIES ('property_name'='property_value') | PARTITION ( partition_column=partition_value [, ...] ) SET LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' } | ADD [IF NOT EXISTS] PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' } [, ... ] | DROP PARTITION ( partition_column=partition_value [, ...] )

Untuk mengurangi waktu untuk menjalankan perintah ALTER TABLE, Anda dapat menggabungkan beberapa klausa dari perintah ALTER TABLE.

Amazon Redshift mendukung kombinasi klausa ALTER TABLE berikut:

ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTKEY column_Id; ALTER TABLE tablename ALTER DISTKEY column_Id, ALTER SORTKEY (column_list); ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTSTYLE ALL; ALTER TABLE tablename ALTER DISTSTYLE ALL, ALTER SORTKEY (column_list);

Parameter

table_name

Nama tabel yang akan diubah. Entah menentukan hanya nama tabel, atau gunakan format schema_name.table_name untuk menggunakan skema tertentu. Tabel eksternal harus memenuhi syarat dengan nama skema eksternal. Anda juga dapat menentukan nama tampilan jika Anda menggunakan pernyataan ALTER TABLE untuk mengganti nama tampilan atau mengubah pemiliknya. Panjang maksimum untuk nama tabel adalah 127 byte; nama yang lebih panjang dipotong menjadi 127 byte. Anda dapat menggunakan karakter UTF-8 multibyte hingga maksimal empat byte. Untuk informasi selengkapnya tentang nama yang valid, lihatNama dan pengenal.

TAMBAHKAN table_restriint

Klausa yang menambahkan batasan yang ditentukan ke tabel. Untuk deskripsi nilai table_restriint yang valid, lihat. CREATE TABLE

catatan

Anda tidak dapat menambahkan batasan kunci primer ke kolom yang dapat dibatalkan. Jika kolom awalnya dibuat dengan batasan NOT NULL, Anda dapat menambahkan batasan kunci primer.

DROP CONSTRAINT Constraint_name

Klausa yang menghapus batasan bernama dari tabel. Untuk melepaskan kendala, tentukan nama kendala, bukan jenis kendala. Untuk melihat nama kendala tabel, jalankan kueri berikut.

select constraint_name, constraint_type from information_schema.table_constraints;
MEMBATASI

Klausa yang menghapus hanya batasan yang ditentukan. RESTRICT adalah opsi untuk DROP CONSTRAINT. RESTRICT tidak dapat digunakan dengan CASCADE.

KASKADE

Klausa yang menghapus batasan yang ditentukan dan apa pun yang bergantung pada batasan itu. CASCADE adalah opsi untuk DROP CONSTRAINT. CASCADE tidak dapat digunakan dengan RESTRICT.

PEMILIK KE new_owner

Klausa yang mengubah pemilik tabel (atau tampilan) ke nilai new_owner.

GANTI NAMA MENJADI new_name

Klausa yang mengganti nama tabel (atau tampilan) ke nilai yang ditentukan dalam new _name. Panjang nama tabel maksimum adalah 127 byte; nama yang lebih panjang dipotong menjadi 127 byte.

Anda tidak dapat mengganti nama tabel permanen menjadi nama yang dimulai dengan '#'. Nama tabel yang dimulai dengan '#' menunjukkan tabel sementara.

Anda tidak dapat mengganti nama tabel eksternal.

UBAH KOLOM N_Nama KOLOM TIPE updated_varchar_data_type_size

Klausa yang mengubah ukuran kolom yang didefinisikan sebagai tipe data VARCHAR. Klausa ini hanya mendukung perubahan ukuran tipe data VARCHAR. Pertimbangkan batasan berikut:

  • Anda tidak dapat mengubah kolom dengan pengkodean kompresi BYTEDICT, RUNLENGTH, TEXT255, atau TEXT32K.

  • Anda tidak dapat mengurangi ukuran kurang dari ukuran maksimum data yang ada.

  • Anda tidak dapat mengubah kolom dengan nilai default.

  • Anda tidak dapat mengubah kolom dengan UNIQUE, PRIMARY KEY, atau FOREIGN KEY.

  • Anda tidak dapat mengubah kolom dalam blok transaksi (BEGIN... AKHIR). Untuk informasi lebih lanjut tentang transaksi, lihatTingkat isolasi di Amazon Redshift.

UBAH NAMA_ kolom ENCODE new_encode_type

Klausa yang mengubah pengkodean kompresi kolom. Jika Anda menentukan pengkodean kompresi untuk kolom, tabel tidak lagi disetel ke ENCODE AUTO. Untuk informasi tentang pengkodean kompresi, lihatKompresi kolom untuk mengurangi ukuran data yang disimpan.

Saat Anda mengubah pengkodean kompresi untuk kolom, tabel tetap tersedia untuk kueri.

Pertimbangkan batasan berikut:

  • Anda tidak dapat mengubah kolom ke pengkodean yang sama seperti yang didefinisikan saat ini untuk kolom.

  • Anda tidak dapat mengubah pengkodean untuk kolom dalam tabel dengan sortkey yang disisipkan.

UBAH NAMA_ kolom ENCODE encode_type, ALTER COLUMn_ name ENCODE encode_type, ... ;

Klausa yang mengubah pengkodean kompresi beberapa kolom dalam satu perintah. Untuk informasi tentang pengkodean kompresi, lihatKompresi kolom untuk mengurangi ukuran data yang disimpan.

Saat Anda mengubah pengkodean kompresi untuk kolom, tabel tetap tersedia untuk kueri.

Pertimbangkan batasan berikut:

  • Anda tidak dapat mengubah kolom ke jenis pengkodean yang sama atau berbeda beberapa kali dalam satu perintah.

  • Anda tidak dapat mengubah kolom ke pengkodean yang sama seperti yang didefinisikan saat ini untuk kolom.

  • Anda tidak dapat mengubah pengkodean untuk kolom dalam tabel dengan sortkey yang disisipkan.

UBAH DISTSTYLE SEMUA

Klausa yang mengubah gaya distribusi tabel yang ada menjadiALL. Pertimbangkan hal berikut:

  • ALTER DISTSTYLE, ALTER SORTKEY, dan VACUUM tidak dapat berjalan secara bersamaan di tabel yang sama.

    • Jika VACUUM saat ini sedang berjalan, maka menjalankan ALTER DISTSTYLE ALL mengembalikan kesalahan.

    • Jika ALTER DISTSTYLE ALL berjalan, maka penyedot debu latar belakang tidak dimulai di atas meja.

  • Perintah ALTER DISTSTYLE ALL tidak didukung untuk tabel dengan kunci pengurutan yang disisipkan dan tabel sementara.

  • Jika gaya distribusi sebelumnya didefinisikan sebagai AUTO, maka tabel tidak lagi menjadi kandidat untuk pengoptimalan tabel otomatis.

Untuk informasi lebih lanjut tentang DISTSTYLE ALL, lihatCREATE TABLE.

UBAH DISTSTYLE BAHKAN

Klausa yang mengubah gaya distribusi tabel yang ada menjadiEVEN. Pertimbangkan hal berikut:

  • ALTER DISTSYTLE, ALTER SORTKEY, dan VACUUM tidak dapat berjalan secara bersamaan di tabel yang sama.

    • Jika VACUUM saat ini sedang berjalan, maka menjalankan ALTER DISTSTYLE EVEN mengembalikan kesalahan.

    • Jika ALTER DISTSTYLE EVEN berjalan, maka vakum latar belakang tidak dimulai di atas meja.

  • Perintah ALTER DISTSTYLE EVEN tidak didukung untuk tabel dengan kunci pengurutan yang disisipkan dan tabel sementara.

  • Jika gaya distribusi sebelumnya didefinisikan sebagai AUTO, maka tabel tidak lagi menjadi kandidat untuk pengoptimalan tabel otomatis.

Untuk informasi lebih lanjut tentang DISTSTYLE EVEN, lihatCREATE TABLE.

UBAH NAMA_kolom DISTKEY atau ALTER DISTSTYLE KEY NAMa_kolom DISTKEY

Klausa yang mengubah kolom yang digunakan sebagai kunci distribusi tabel. Pertimbangkan hal berikut:

  • VACUUM dan ALTER DISTKEY tidak dapat berjalan secara bersamaan di meja yang sama.

    • Jika VACUUM sudah berjalan, maka ALTER DISTKEY mengembalikan kesalahan.

    • Jika ALTER DISTKEY berjalan, maka vakum latar belakang tidak dimulai di atas meja.

    • Jika ALTER DISTKEY berjalan, maka vakum latar depan mengembalikan kesalahan.

  • Anda hanya dapat menjalankan satu perintah ALTER DISTKEY pada tabel pada satu waktu.

  • Perintah ALTER DISTKEY tidak didukung untuk tabel dengan kunci pengurutan yang disisipkan.

  • Jika gaya distribusi sebelumnya didefinisikan sebagai AUTO, maka tabel tidak lagi menjadi kandidat untuk pengoptimalan tabel otomatis.

Saat menentukan DISTSTYLE KEY, data didistribusikan oleh nilai-nilai di kolom DISTKEY. Untuk informasi lebih lanjut tentang DISTSTYLE, lihatCREATE TABLE.

UBAH DISTSTYLE AUTO

Klausa yang mengubah gaya distribusi tabel yang ada menjadi AUTO.

Ketika Anda mengubah gaya distribusi menjadi AUTO, gaya distribusi tabel diatur ke berikut:

  • Sebuah tabel kecil dengan DISTSTYLE ALL diubah menjadi AUTO (ALL).

  • Meja kecil dengan DISTSTYLE EVEN diubah menjadi AUTO (ALL).

  • Sebuah tabel kecil dengan DISTSTYLE KEY dikonversi ke AUTO (ALL).

  • Tabel besar dengan DISTSTYLE ALL diubah menjadi AUTO (EVEN).

  • Meja besar dengan DISTSTYLE EVEN diubah menjadi AUTO (EVEN).

  • Tabel besar dengan DISTSTYLE KEY dikonversi ke AUTO (KEY) dan DISTKEY dipertahankan. Dalam hal ini, Amazon Redshift tidak membuat perubahan pada tabel.

Jika Amazon Redshift menentukan bahwa gaya atau kunci distribusi baru akan meningkatkan kinerja kueri, maka Amazon Redshift mungkin mengubah gaya distribusi atau kunci tabel Anda di masa mendatang. Misalnya, Amazon Redshift dapat mengonversi tabel dengan DISTSTYLE AUTO (KEY) menjadi AUTO (EVEN), atau sebaliknya. Untuk informasi selengkapnya tentang perilaku saat kunci distribusi diubah, termasuk redistribusi data dan kunci, lihat rekomendasi Amazon Redshift Advisor.

Untuk informasi lebih lanjut tentang DISTSTYLE AUTO, lihatCREATE TABLE.

Untuk melihat gaya distribusi tabel, kueri tampilan katalog sistem SVV_TABLE_INFO. Untuk informasi selengkapnya, lihat SVV_TABLE_INFO. Untuk melihat rekomendasi Amazon Redshift Advisor untuk tabel, kueri tampilan katalog sistem SVV_ALTER_TABLE_RECOMMENDATIONS. Untuk informasi selengkapnya, lihat SVV_ALTER_TABLE_RECOMMENDATIONS. Untuk melihat tindakan yang dilakukan oleh Amazon Redshift, kueri tampilan katalog sistem SVL_AUTO_WORKER_ACTION. Untuk informasi selengkapnya, lihat SVL_AUTO_WORKER_ACTION.

UBAH [COMPOUND] SORTKEY (nama_ kolom [,...])

Klausa yang mengubah atau menambahkan kunci pengurutan yang digunakan untuk tabel. ALTER SORTKEY tidak didukung untuk tabel sementara.

Saat Anda mengubah kunci pengurutan, pengkodean kompresi kolom di kunci pengurutan baru atau asli dapat berubah. Jika tidak ada pengkodean yang ditentukan secara eksplisit untuk tabel, maka Amazon Redshift secara otomatis menetapkan pengkodean kompresi sebagai berikut:

  • Kolom yang didefinisikan sebagai kunci pengurutan diberi kompresi RAW.

  • Kolom yang didefinisikan sebagai tipe data BOOLEAN, REAL, atau DOUBLE PRECISION diberi kompresi RAW.

  • Kolom yang didefinisikan sebagai SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP, atau TIMESTAMPTZ diberi kompresi AZ64.

  • Kolom yang didefinisikan sebagai CHAR atau VARCHAR diberi kompresi LZO.

Pertimbangkan hal berikut:

  • Anda dapat menentukan maksimum 400 kolom untuk kunci pengurutan per tabel.

  • Anda dapat mengubah kunci pengurutan yang disisipkan menjadi kunci pengurutan majemuk atau tanpa kunci pengurutan. Namun, Anda tidak dapat mengubah kunci pengurutan majemuk menjadi kunci pengurutan yang disisipkan.

  • Jika kunci pengurutan sebelumnya didefinisikan sebagai AUTO, maka tabel tidak lagi menjadi kandidat untuk pengoptimalan tabel otomatis.

  • Amazon Redshift merekomendasikan penggunaan penyandian RAW (tanpa kompresi) untuk kolom yang didefinisikan sebagai kunci pengurutan. Ketika Anda mengubah kolom untuk memilihnya sebagai kunci pengurutan, kompresi kolom diubah menjadi kompresi RAW (tanpa kompresi). Ini dapat meningkatkan jumlah penyimpanan yang dibutuhkan oleh tabel. Seberapa besar ukuran tabel meningkat tergantung pada definisi tabel tertentu dan isi tabel. Untuk informasi selengkapnya tentang kompresi, lihat Pengkodean kompresi

Ketika data dimuat ke dalam tabel, data dimuat dalam urutan kunci pengurutan. Saat Anda mengubah tombol pengurutan, Amazon Redshift menyusun ulang data. Untuk informasi lebih lanjut tentang SORTKEY, lihat. CREATE TABLE

ALTER SORTKEY OTOMATIS

Klausa yang mengubah atau menambahkan kunci pengurutan tabel target ke AUTO. ALTER SORTKEY AUTO tidak didukung untuk tabel sementara.

Saat Anda mengubah kunci pengurutan menjadi AUTO, Amazon Redshift mempertahankan kunci pengurutan tabel yang ada.

Jika Amazon Redshift menentukan bahwa kunci pengurutan baru akan meningkatkan kinerja kueri, maka Amazon Redshift mungkin mengubah kunci pengurutan tabel Anda di masa mendatang.

Untuk informasi selengkapnya tentang SORTKEY AUTO, lihat. CREATE TABLE

Untuk melihat kunci pengurutan tabel, kueri tampilan katalog sistem SVV_TABLE_INFO. Untuk informasi selengkapnya, lihat SVV_TABLE_INFO. Untuk melihat rekomendasi Amazon Redshift Advisor untuk tabel, kueri tampilan katalog sistem SVV_ALTER_TABLE_RECOMMENDATIONS. Untuk informasi selengkapnya, lihat SVV_ALTER_TABLE_RECOMMENDATIONS. Untuk melihat tindakan yang dilakukan oleh Amazon Redshift, kueri tampilan katalog sistem SVL_AUTO_WORKER_ACTION. Untuk informasi selengkapnya, lihat SVL_AUTO_WORKER_ACTION.

ALTER SORTKEY TIDAK ADA

Klausa yang menghapus kunci pengurutan dari tabel target.

Jika kunci pengurutan sebelumnya didefinisikan sebagai AUTO, maka tabel tidak lagi menjadi kandidat untuk pengoptimalan tabel otomatis.

UBAH PENGKODEAN OTOMATIS

Klausa yang mengubah jenis pengkodean kolom tabel target menjadi AUTO. Saat Anda mengubah pengkodean ke AUTO, Amazon Redshift mempertahankan jenis pengkodean kolom yang ada dalam tabel. Kemudian, jika Amazon Redshift menentukan bahwa jenis pengkodean baru dapat meningkatkan kinerja kueri, Amazon Redshift dapat mengubah jenis pengkodean kolom tabel.

Jika Anda mengubah satu atau beberapa kolom untuk menentukan pengkodean, Amazon Redshift tidak lagi secara otomatis menyesuaikan pengkodean untuk semua kolom dalam tabel. Kolom mempertahankan pengaturan encode saat ini.

Tindakan berikut tidak mempengaruhi pengaturan ENCODE AUTO untuk tabel:

  • Mengganti nama tabel.

  • Mengubah pengaturan DISTSTYLE atau SORTKEY untuk tabel.

  • Menambahkan atau menjatuhkan kolom dengan pengaturan ENCODE.

  • Menggunakan opsi COMPUPDATE dari perintah COPY. Untuk informasi selengkapnya, lihat Operasi beban data.

Untuk melihat pengkodean tabel, kueri tampilan katalog sistem SVV_TABLE_INFO. Untuk informasi selengkapnya, lihat SVV_TABLE_INFO.

GANTI NAMA COLUMN COLUMN_NAME MENJADI new_name

Klausa yang mengganti nama kolom ke nilai yang ditentukan dalam new _name. Panjang nama kolom maksimum adalah 127 byte; nama yang lebih panjang dipotong menjadi 127 byte. Untuk informasi selengkapnya tentang nama yang valid, lihatNama dan pengenal.

TAMBAHKAN [KOLOM] nama_ kolom

Klausa yang menambahkan kolom dengan nama yang ditentukan ke tabel. Anda dapat menambahkan hanya satu kolom di setiap pernyataan ALTER TABLE.

Anda tidak dapat menambahkan kolom yang merupakan kunci distribusi (DISTKEY) atau kunci pengurutan (SORTKEY) dari tabel.

Anda tidak dapat menggunakan perintah ALTER TABLE ADD COLUMN untuk mengubah tabel berikut dan atribut kolom:

  • UNIK

  • KUNCI UTAMA

  • REFERENSI (kunci asing)

  • IDENTITAS atau DIHASILKAN SECARA DEFAULT SEBAGAI IDENTITAS

Panjang nama kolom maksimum adalah 127 byte; nama yang lebih panjang dipotong menjadi 127 byte. Jumlah maksimum kolom yang dapat Anda tentukan dalam satu tabel adalah 1.600.

Batasan berikut berlaku saat menambahkan kolom ke tabel eksternal:

  • Anda tidak dapat menambahkan kolom ke tabel eksternal dengan batasan kolom DEFAULT, ENCODE, NOT NULL, atau NULL.

  • Anda tidak dapat menambahkan kolom ke tabel eksternal yang ditentukan menggunakan format file AVRO.

  • Jika pseudocolumn diaktifkan, jumlah maksimum kolom yang dapat Anda tentukan dalam satu tabel eksternal adalah 1.598. Jika pseudocolumn tidak diaktifkan, jumlah maksimum kolom yang dapat Anda tentukan dalam satu tabel adalah 1.600.

Untuk informasi selengkapnya, lihat CREATE EXTERNAL TABLE.

tipe_kolom

Jenis data kolom yang ditambahkan. Untuk kolom CHAR dan VARCHAR, Anda dapat menggunakan kata kunci MAX alih-alih mendeklarasikan panjang maksimum. MAX menetapkan panjang maksimum ke 4.096 byte untuk CHAR atau 65.535 byte untuk VARCHAR. Ukuran maksimum objek GEOMETRY adalah 1.048.447 byte.

Untuk informasi tentang tipe data yang didukung Amazon Redshift, lihatJenis Data.

DEFAULT default_expr

Klausa yang menetapkan nilai data default untuk kolom. Tipe data default_expr harus sesuai dengan tipe data kolom. Nilai DEFAULT harus berupa ekspresi bebas variabel. Subquery, referensi silang ke kolom lain dalam tabel saat ini, dan fungsi yang ditentukan pengguna tidak diperbolehkan.

Default_expr digunakan dalam operasi INSERT apa pun yang tidak menentukan nilai untuk kolom. Jika tidak ada nilai default yang ditentukan, nilai default untuk kolom adalah null.

Jika operasi COPY menemukan bidang null pada kolom yang memiliki nilai DEFAULT dan batasan NOT NULL, perintah COPY menyisipkan nilai default _expr.

DEFAULT tidak didukung untuk tabel eksternal.

ENCODE pengkodean

Pengkodean kompresi untuk kolom. Secara default, Amazon Redshift secara otomatis mengelola pengkodean kompresi untuk semua kolom dalam tabel jika Anda tidak menentukan pengkodean kompresi untuk kolom apa pun dalam tabel atau jika Anda menentukan opsi ENCODE AUTO untuk tabel.

Jika Anda menentukan pengkodean kompresi untuk kolom apa pun dalam tabel atau jika Anda tidak menentukan opsi ENCODE AUTO untuk tabel, Amazon Redshift secara otomatis menetapkan pengkodean kompresi ke kolom yang tidak Anda tentukan pengkodean kompresi sebagai berikut:

  • Semua kolom dalam tabel sementara diberi kompresi RAW secara default.

  • Kolom yang didefinisikan sebagai kunci pengurutan diberi kompresi RAW.

  • Kolom yang didefinisikan sebagai tipe data BOOLEAN, REAL, DOUBLE PRECISION, GEOMETRY, atau GEOGRAPHY diberi kompresi RAW.

  • Kolom yang didefinisikan sebagai SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP, atau TIMESTAMPTZ diberi kompresi AZ64.

  • Kolom yang didefinisikan sebagai CHAR, VARCHAR, atau VARBYTE diberi kompresi LZO.

catatan

Jika Anda tidak ingin kolom dikompresi, tentukan pengkodean RAW secara eksplisit.

compression encodings berikut didukung:

  • AZ64

  • BYTEDICT

  • DELTA

  • DELTA32K

  • LZO

  • MAYORIT8

  • MAYORIT16

  • MAYORIT32

  • RAW (tanpa kompresi)

  • PANJANG

  • TEKS255

  • TEKS32K

  • ZSTD

ENCODE tidak didukung untuk tabel eksternal.

BUKAN NULL | NULL

NOT NULL menentukan bahwa kolom tidak diizinkan untuk berisi nilai null. NULL, default, menentukan bahwa kolom menerima nilai null.

NOT NULL dan NULL tidak didukung untuk tabel eksternal.

SUSUN {CASE_SENSITIVE | CS | CASE_INSENSITIVE | CI}

Klausa yang menentukan apakah pencarian string atau perbandingan pada kolom peka huruf besar/kecil atau tidak peka huruf besar/kecil. Nilai defaultnya sama dengan konfigurasi sensitivitas huruf besar saat ini dari database.

Untuk memeriksa kolasi database saat ini, gunakan DB_COLLATION fungsi.

CASE_SENSITIVE dan CS dapat dipertukarkan dan menghasilkan hasil yang sama. Demikian pula, CASE_INSENSITIVE dan CI dapat dipertukarkan dan menghasilkan hasil yang sama.

JATUHKAN [KOLOM] nama_ kolom

Nama kolom yang akan dihapus dari tabel.

Anda tidak dapat menjatuhkan kolom terakhir dalam tabel. Sebuah tabel harus memiliki setidaknya satu kolom.

Anda tidak dapat melepaskan kolom yang merupakan kunci distribusi (DISTKEY) atau kunci pengurutan (SORTKEY) dari tabel. Perilaku default untuk DROP COLUMN adalah RESTRICT jika kolom memiliki objek dependen, seperti tampilan, kunci primer, kunci asing, atau pembatasan UNIK.

Batasan berikut berlaku saat menjatuhkan kolom dari tabel eksternal:

  • Anda tidak dapat melepaskan kolom dari tabel eksternal jika kolom tersebut digunakan sebagai partisi.

  • Anda tidak dapat melepaskan kolom dari tabel eksternal yang ditentukan menggunakan format file AVRO.

  • RESTRICT dan CASCADE diabaikan untuk tabel eksternal.

  • Anda tidak dapat menghapus kolom tabel kebijakan yang direferensikan di dalam definisi kebijakan kecuali Anda menghapus atau melepaskan kebijakan tersebut. Ini juga berlaku ketika opsi CASCADE ditentukan. Anda dapat melepaskan kolom lain di tabel kebijakan.

Untuk informasi selengkapnya, lihat CREATE EXTERNAL TABLE.

MEMBATASI

Ketika digunakan dengan DROP COLUMN, RESTRICT berarti kolom yang akan dijatuhkan tidak dijatuhkan, dalam kasus ini:

  • Jika tampilan yang ditentukan mereferensikan kolom yang sedang dijatuhkan

  • Jika kunci asing mereferensikan kolom

  • Jika kolom mengambil bagian dalam kunci multipart

RESTRICT tidak dapat digunakan dengan CASCADE.

RESTRICT dan CASCADE diabaikan untuk tabel eksternal.

KASKADE

Saat digunakan dengan DROP COLUMN, menghapus kolom yang ditentukan dan apa pun yang bergantung pada kolom itu. CASCADE tidak dapat digunakan dengan RESTRICT.

RESTRICT dan CASCADE diabaikan untuk tabel eksternal.

Opsi berikut hanya berlaku untuk tabel eksternal.

TETAPKAN LOKASI {'s3://bucket/folder/' | 's3://'} bucket/manifest_file

Jalur ke folder Amazon S3 yang berisi file data atau file manifes yang berisi daftar jalur objek Amazon S3. Bucket harus berada di Wil AWS ayah yang sama dengan cluster Amazon Redshift. Untuk daftar Wilayah yang didukung AWS , lihatBatasan Amazon Redshift Spectrum. Untuk informasi selengkapnya tentang menggunakan file manifes, lihat LOKASI di Parameter referensi CREATE EXTERNAL TABLE.

ATUR FORMAT FILE

Format file untuk file data eksternal.

Format yang valid adalah sebagai berikut:

  • AVRO

  • PARQUET

  • RCFILE

  • SEQUENCEFILE

  • TEXTFILE

ATUR PROPERTI TABEL ('property_name' = 'property_value')

Klausa yang menetapkan definisi tabel untuk properti tabel untuk tabel eksternal.

catatan

Properti tabel peka huruf besar/kecil.

'numrow s' = 'hitung_baris'

Properti yang menetapkan nilai numRows untuk definisi tabel. Untuk memperbarui statistik tabel eksternal secara eksplisit, atur properti numRows untuk menunjukkan ukuran tabel. Amazon Redshift tidak menganalisis tabel eksternal untuk menghasilkan statistik tabel yang digunakan pengoptimal kueri untuk menghasilkan rencana kueri. Jika statistik tabel tidak disetel untuk tabel eksternal, Amazon Redshift akan menghasilkan rencana eksekusi kueri. Rencana ini didasarkan pada asumsi bahwa tabel eksternal adalah tabel yang lebih besar dan tabel lokal adalah tabel yang lebih kecil.

'skip.header.line.count'=' hitung_baris '

Properti yang menetapkan jumlah baris untuk dilewati di awal setiap file sumber.

PARTISI (partisi_kolom = partisi_nilai [,...] TETAPKAN LOKASI {'s3://bucket/folder '| 's3://bucket/manifest _file'}

Klausa yang menetapkan lokasi baru untuk satu atau lebih kolom partisi.

TAMBAHKAN [JIKA TIDAK ADA] PARTISI (partition_column = partition_value [,...]) LOKASI {'s3://bucket/folder '| 's3://bucket/manifest_file'} [,...]

Sebuah klausa yang menambahkan satu atau lebih partisi. Anda dapat menentukan beberapa klausa PARTITION menggunakan pernyataan ALTER TABLE... ADD tunggal.

catatan

Jika Anda menggunakan AWS Glue katalog, Anda dapat menambahkan hingga 100 partisi menggunakan pernyataan ALTER TABLE tunggal.

Klausa IF NOT EXISTS menunjukkan bahwa jika partisi yang ditentukan sudah ada, perintah tidak boleh membuat perubahan. Ini juga menunjukkan bahwa perintah harus mengembalikan pesan bahwa partisi ada, daripada diakhiri dengan kesalahan. Klausa ini berguna saat membuat skrip, sehingga skrip tidak gagal jika ALTER TABLE mencoba menambahkan partisi yang sudah ada.

JATUHKAN PARTISI (partisi_kolom = partisi_nilai [,...])

Klausa yang menjatuhkan partisi yang ditentukan. Menjatuhkan partisi hanya mengubah metadata tabel eksternal. Data di Amazon S3 tidak terpengaruh.

KEAMANAN TINGKAT BARIS {ON | OFF} [TIPE KONJUNGSI {DAN | ATAU}] [UNTUK BERBAGI DATA]

Klausa yang mengaktifkan atau menonaktifkan keamanan tingkat baris untuk relasi.

Saat keamanan tingkat baris diaktifkan untuk relasi, Anda hanya dapat membaca baris yang diizinkan untuk diakses oleh kebijakan keamanan tingkat baris. Jika tidak ada kebijakan yang memberi Anda akses ke relasi, Anda tidak dapat melihat baris apa pun dari relasi. Hanya pengguna super dan pengguna atau peran yang memiliki sys:secadmin peran yang dapat mengatur klausa KEAMANAN TINGKAT BARIS. Untuk informasi selengkapnya, lihat Row-level keamanan. Pernyataan ini didukung pada database yang terhubung atau pada database dengan izin federasi amazon redshift. Klausa FOR DATASHARES tidak didukung pada database dengan izin federasi Amazon Redshift.

  • [TIPE KONJUNGSI {DAN | ATAU}]

    Klausa yang memungkinkan Anda memilih jenis konjungsi kebijakan keamanan tingkat baris untuk relasi. Ketika beberapa kebijakan keamanan tingkat baris dilampirkan ke relasi, Anda dapat menggabungkan kebijakan dengan klausa AND atau OR. Secara default, Amazon Redshift menggabungkan kebijakan RLS dengan klausa AND. Pengguna super, pengguna, atau peran yang memiliki sys:secadmin peran dapat menggunakan klausa ini untuk menentukan jenis konjungsi kebijakan keamanan tingkat baris untuk relasi. Untuk informasi selengkapnya, lihat Menggabungkan beberapa kebijakan per pengguna.

  • UNTUK BERBAGI DATA

    Klausa yang menentukan apakah suatu RLS-protected relasi dapat diakses melalui datashares. Secara default, RLS-protected relasi tidak dapat diakses melalui datashare. Perintah ALTER TABLE ROW LEVEL SECURITY yang dijalankan dengan klausa ini hanya memengaruhi properti aksesibilitas datashare relasi. Properti ROW LEVEL SECURITY tidak diubah.

    Jika Anda membuat RLS-protected relasi dapat diakses melalui datashares, relasi tersebut tidak memiliki keamanan tingkat baris di database yang dibagikan data sisi konsumen. Hubungan mempertahankan properti RLS di sisi produsen.

MASKING {ON | OFF} UNTUK BERBAGI DATA

Klausa yang menentukan apakah DDM-protected relasi dapat diakses melalui datashares. Secara default, DDM-protected relasi tidak dapat diakses melalui datashare. Jika Anda membuat DDM-protected relasi dapat diakses melalui datashares, relasi tidak akan memiliki perlindungan masking di database yang dibagikan data sisi konsumen. Hubungan mempertahankan properti masking di sisi produsen. Hanya pengguna super dan pengguna atau peran yang memiliki peran yang dapat mengatur sys:secadmin klausa MASKING FOR DATASHARES. Untuk informasi selengkapnya, lihat Penyembunyian data dinamis.

Contoh

Untuk contoh yang menunjukkan cara menggunakan perintah ALTER TABLE, lihat berikut ini.