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 tidak dapat menjalankan ALTER TABLE pada tabel eksternal dalam blok transaksi (MULAI... AKHIR). Untuk informasi lebih lanjut tentang transaksi, lihatIsolasi yang dapat diserialisasi.
ALTER TABLE mengunci tabel untuk operasi baca dan tulis sampai transaksi yang melampirkan operasi ALTER TABLE selesai, kecuali jika secara khusus dinyatakan dalam dokumentasi bahwa Anda dapat melakukan kueri data atau melakukan operasi lain di atas meja saat diubah.
Hak istimewa yang diperlukan
Pengguna yang mengubah tabel membutuhkan hak istimewa yang tepat agar perintah berhasil. Bergantung pada perintah ALTER TABLE, salah satu hak istimewa berikut diperlukan.
Superuser
Pengguna dengan hak istimewa ALTER TABLE
Pemilik tabel dengan hak istimewa USE pada skema
Sintaks
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 | CASE_INSENSITIVE } ] | | DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] | ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ 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 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 untuk diubah. Entah menentukan hanya nama tabel, atau menggunakan 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 multibyte UTF-8 hingga maksimal empat byte. Untuk informasi selengkapnya tentang nama yang valid, lihatNama dan pengidentifikasi.
- TAMBAHKAN table_constraint
-
Sebuah klausa yang menambahkan kendala yang ditentukan ke tabel. Untuk deskripsi nilai table_constraint yang valid, lihat. CREATE TABLE
catatan
Anda tidak dapat menambahkan batasan kunci utama ke kolom nullable. Jika kolom awalnya dibuat dengan batasan NOT NULL, Anda dapat menambahkan kendala kunci utama.
- DROP CONSTRAINT constraint_name
-
Sebuah klausa yang menjatuhkan kendala bernama dari tabel. Untuk menjatuhkan batasan, tentukan nama kendala, bukan tipe kendala. Untuk melihat nama batasan tabel, jalankan kueri berikut.
select constraint_name, constraint_type from information_schema.table_constraints;
- MEMBATASI
-
Sebuah klausa yang menghapus hanya kendala yang ditentukan. RESTRICT adalah opsi untuk DROP CONSTRAINT. RESTRICT tidak dapat digunakan dengan CASCADE.
- RIAM
-
Klausa yang menghapus batasan yang ditentukan dan apa pun yang bergantung pada kendala itu. CASCADE adalah pilihan untuk DROP CONSTRAINT. CASCADE tidak dapat digunakan dengan RESTRICT.
- PEMILIK UNTUK 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 diawali dengan '#' menunjukkan tabel sementara.
Anda tidak dapat mengganti nama tabel eksternal.
- UBAH KOLOM column_name JENIS updated_varchar_data_type_size
-
Sebuah klausa yang mengubah ukuran kolom didefinisikan sebagai tipe data VARCHAR. Klausul ini hanya mendukung mengubah ukuran tipe data VARCHAR. Pertimbangkan batasan berikut:
-
Anda tidak dapat mengubah kolom dengan pengkodean kompresi BYTEDICT, RUNLENGTH,, atau K. TEXT255 TEXT32
-
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 (MULAI... AKHIR). Untuk informasi lebih lanjut tentang transaksi, lihatIsolasi yang dapat diserialisasi.
-
- UBAH KOLOM column_name ENCODE new_encode_type
-
Klausa yang mengubah pengkodean kompresi kolom. Jika Anda menentukan pengkodean kompresi untuk kolom, tabel tidak lagi diatur 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 saat ini ditentukan untuk kolom.
-
Anda tidak dapat mengubah pengkodean untuk kolom dalam tabel dengan sortkey yang disisipkan.
-
- UBAH KOLOM kolom_name ENCODE encode_type, UBAH KOLOM kolom_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 saat ini ditentukan untuk kolom.
-
Anda tidak dapat mengubah pengkodean untuk kolom dalam tabel dengan sortkey yang disisipkan.
- MENGUBAH DISTSTYLE SEMUA
-
Klausa yang mengubah gaya distribusi tabel yang ada menjadi.
ALL
Pertimbangkan hal berikut:-
ALTER DISTYLE, ALTER SORTKEY, dan VACUUM tidak dapat berjalan secara bersamaan pada tabel yang sama.
-
Jika VACUUM sedang berjalan, maka menjalankan ALTER DISTYLE ALL mengembalikan kesalahan.
-
Jika ALTER DISTYLE ALL berjalan, maka vakum latar belakang tidak dimulai di atas meja.
-
-
Perintah ALTER DISTYLE 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 optimasi tabel otomatis.
Untuk informasi lebih lanjut tentang DISTSTYLE ALL, lihatCREATE TABLE.
-
- MENGUBAH DISTSTYLE BAHKAN
-
Klausa yang mengubah gaya distribusi tabel yang ada menjadi.
EVEN
Pertimbangkan hal berikut:-
ALTER DISTSYTLE, ALTER SORTKEY, dan VACUUM tidak dapat berjalan secara bersamaan pada tabel yang sama.
-
Jika VACUUM sedang berjalan, maka menjalankan ALTER DISTYLE EVEN mengembalikan kesalahan.
-
Jika ALTER DISTYLE EVEN sedang 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 optimasi tabel otomatis.
Untuk informasi lebih lanjut tentang DISTSTYLE EVEN, lihatCREATE TABLE.
-
- UBAH DISTKEY column_name atau ALTER DISTYLE KEY DISTYLE column_name
-
Klausa yang mengubah kolom yang digunakan sebagai kunci distribusi tabel. Pertimbangkan hal berikut:
-
VACUUM dan ALTER DISTKEY tidak dapat berjalan secara bersamaan pada tabel yang sama.
-
Jika VACUUM sudah berjalan, maka ALTER DISTKEY mengembalikan kesalahan.
-
Jika ALTER DISTKEY sedang berjalan, maka vakum latar belakang tidak dimulai di atas meja.
-
Jika ALTER DISTKEY sedang berjalan, maka vakum latar depan mengembalikan kesalahan.
-
-
Anda hanya dapat menjalankan satu perintah ALTER DISTKEY di atas meja 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 optimasi tabel otomatis.
Saat menentukan KUNCI DISTYLE, data didistribusikan oleh nilai-nilai di kolom DISTKEY. Untuk informasi lebih lanjut tentang DISTSTYLE, lihatCREATE TABLE.
-
- MENGUBAH DISTSTYLE MOBIL
-
Klausa yang mengubah gaya distribusi tabel yang ada menjadi AUTO.
Bila Anda mengubah gaya distribusi ke AUTO, gaya distribusi tabel diatur sebagai berikut:
Meja kecil dengan DISTSTYLE ALL dikonversi ke AUTO (ALL).
Meja kecil dengan DISTSTYLE EVEN dikonversi ke AUTO (ALL).
Sebuah meja kecil dengan DISTYLE KEY dikonversi ke AUTO (ALL).
Meja besar dengan DISTSTYLE ALL dikonversi ke AUTO (EVEN).
Meja besar dengan DISTSTYLE EVEN dikonversi ke AUTO (EVEN).
Meja besar dengan DISTYLE KEY dikonversi ke AUTO (KEY) dan DISTKEY dipertahankan. Dalam hal ini, Amazon Redshift tidak membuat perubahan pada tabel.
Jika Amazon Redshift menentukan bahwa gaya distribusi atau kunci baru akan meningkatkan kinerja kueri, Amazon Redshift dapat mengubah gaya distribusi atau kunci tabel Anda di masa mendatang. Misalnya, Amazon Redshift mungkin mengonversi tabel dengan DISTSTYLE AUTO (KEY) ke AUTO (EVEN), atau sebaliknya. Untuk informasi selengkapnya tentang perilaku saat kunci distribusi diubah, termasuk redistribusi data dan penguncian, 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_REKOMENDASIONS. Untuk informasi selengkapnya, lihat SVV_ALTER_TABLE_RECOMMENDATIONS. Untuk melihat tindakan yang diambil oleh Amazon Redshift, kueri tampilan katalog sistem SVL_AUTO_WORKER_ACTION. Untuk informasi selengkapnya, lihat SVL_AUTO_WORKER_ACTION.
- UBAH [COMPOUND] SORTKEY (column_name [,...])
-
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 didefinisikan 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 sortir yang disisipkan ke kunci sortir majemuk atau tanpa kunci pengurutan. Namun, Anda tidak dapat mengubah kunci sortir majemuk menjadi kunci sortir yang disisipkan.
Jika kunci pengurutan sebelumnya didefinisikan sebagai AUTO, maka tabel tidak lagi menjadi kandidat untuk optimasi tabel otomatis.
-
Amazon Redshift merekomendasikan penggunaan pengkodean RAW (tanpa kompresi) untuk kolom yang didefinisikan sebagai tombol pengurutan. Saat Anda mengubah kolom untuk memilihnya sebagai kunci pengurutan, kompresi kolom diubah menjadi kompresi RAW (tidak ada kompresi). Ini dapat meningkatkan jumlah penyimpanan yang dibutuhkan oleh tabel. Berapa banyak 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 sortir. Saat Anda mengubah kunci pengurutan, Amazon Redshift menyusun ulang data. Untuk informasi lebih lanjut tentang SORTKEY, lihat. CREATE TABLE
-
- MENGUBAH SORTKEY OTOMATIS
-
Klausa yang mengubah atau menambahkan kunci pengurutan dari tabel target ke AUTO. ALTER SORTKEY AUTO tidak didukung untuk tabel sementara.
Saat Anda mengubah kunci pengurutan ke AUTO, Amazon Redshift mempertahankan kunci pengurutan tabel yang ada.
Jika Amazon Redshift menentukan bahwa kunci pengurutan baru akan meningkatkan kinerja kueri, 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_REKOMENDASIONS. Untuk informasi selengkapnya, lihat SVV_ALTER_TABLE_RECOMMENDATIONS. Untuk melihat tindakan yang diambil oleh Amazon Redshift, kueri tampilan katalog sistem SVL_AUTO_WORKER_ACTION. Untuk informasi selengkapnya, lihat SVL_AUTO_WORKER_ACTION.
- UBAH SORTKEY TIDAK ADA
-
Sebuah klausa yang menghapus kunci sort dari tabel target.
Jika kunci pengurutan sebelumnya didefinisikan sebagai AUTO, maka tabel tidak lagi menjadi kandidat untuk optimasi tabel otomatis.
- MENGUBAH ENCODE 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 memengaruhi pengaturan ENCODE AUTO untuk tabel:
Mengganti nama tabel.
Mengubah pengaturan DISTYLE atau SORTKEY untuk tabel.
Menambahkan atau menjatuhkan kolom dengan pengaturan ENCODE.
Menggunakan opsi COMPUPDATE dari perintah COPY. Untuk informasi selengkapnya, lihat Operasi pemuatan data.
Untuk melihat pengkodean tabel, kueri tampilan katalog sistem SVV_TABLE_INFO. Untuk informasi selengkapnya, lihat SVV_TABLE_INFO.
- GANTI NAMA KOLOM column_name MENJADI new_name
-
Sebuah 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 pengidentifikasi.
- TAMBAHKAN [KOLOM] column_name
-
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 sortir (SORTKEY) dari tabel.
Anda tidak dapat menggunakan perintah ALTER TABLE ADD COLUMN untuk memodifikasi atribut tabel dan kolom berikut:
-
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.
Pembatasan 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 pseudocolumns diaktifkan, jumlah maksimum kolom yang dapat Anda tentukan dalam satu tabel eksternal adalah 1.598. Jika pseudocolumns tidak diaktifkan, jumlah maksimum kolom yang dapat Anda tentukan dalam satu tabel adalah 1.600.
Untuk informasi selengkapnya, lihat CREATE EXTERNAL TABLE.
-
- column_type
-
Tipe data kolom yang ditambahkan. Untuk kolom CHAR dan VARCHAR, Anda dapat menggunakan kata kunci MAX alih-alih mendeklarasikan panjang maksimum. MAX menetapkan panjang maksimum untuk 4.096 byte untuk CHAR atau 65.535 byte untuk VARCHAR. Ukuran maksimum objek GEOMETRI adalah 1.048.447 byte.
Untuk informasi tentang tipe data yang didukung Amazon Redshift, lihat. Jenis data
- DEFAULT_EXPR DEFAULT
-
Klausa yang menetapkan nilai data default untuk kolom. Tipe data default_expr harus cocok dengan tipe data kolom. Nilai DEFAULT harus berupa ekspresi bebas variabel. Subkueri, referensi silang ke kolom lain dalam tabel saat ini, dan fungsi yang ditentukan pengguna tidak diperbolehkan.
Default_expr digunakan dalam setiap operasi INSERT 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.
- PENGKODEAN 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, PRESISI GANDA, GEOMETRI, atau GEOGRAFI 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 secara eksplisit pengkodean RAW.
compression encodings berikut didukung:
-
AZ64
-
BYTEDIKTUS
-
DELTA
-
DELTA32K
-
LZO
-
MOSTLY8
-
MOSTLY16
-
MOSTLY32
-
RAW (tanpa kompresi)
-
RUNLENGTH
-
TEXT255
-
TEXT32K
-
ZSTD
ENCODE tidak didukung untuk tabel eksternal.
-
- TIDAK NULL | NULL
-
NOT NULL menentukan bahwa kolom tidak diperbolehkan untuk berisi nilai-nilai null. NULL, default, menentukan bahwa kolom menerima nilai null.
NOT NULL dan NULL tidak didukung untuk tabel eksternal.
- COLLATE {CASE_SENSITIVE | CASE_INSENSITIVE}
-
Klausa yang menentukan apakah pencarian string atau perbandingan pada kolom adalah CASE_SENSITIVE atau CASE_INSENSITIVE. Nilai defaultnya sama dengan konfigurasi sensitivitas kasus saat ini dari database.
Untuk menemukan informasi pemeriksaan database, gunakan perintah berikut:
SELECT db_collation();
db_collation ---------------- case_sensitive (1 row)
- JATUHKAN [KOLOM] column_name
-
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 menjatuhkan kolom yang merupakan kunci distribusi (DISTKEY) atau kunci sortir (SORTKEY) dari tabel. Perilaku default untuk DROP COLUMN adalah RESTRICT jika kolom memiliki objek dependen, seperti tampilan, kunci primer, kunci asing, atau pembatasan UNIK.
Pembatasan berikut berlaku saat menjatuhkan kolom dari tabel eksternal:
-
Anda tidak dapat menjatuhkan kolom dari tabel eksternal jika kolom digunakan sebagai partisi.
-
Anda tidak dapat menjatuhkan 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. Ini juga berlaku ketika opsi CASCADE ditentukan. Anda dapat menjatuhkan 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.
-
- RIAM
-
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.
- SET LOKASI {'s3://ember/folder /' | 's3://ember/manifest_file '}
-
Jalur ke folder Amazon S3 yang berisi file data atau file manifes yang berisi daftar jalur objek Amazon S3. Ember harus berada di AWS Wilayah yang sama dengan cluster Amazon Redshift. Untuk daftar AWS Wilayah yang didukung, lihatKeterbatasan Amazon Redshift Spectrum. Untuk informasi selengkapnya tentang menggunakan file manifes, lihat LOKASI dalam Parameter referensi BUAT TABEL EKSTERNAL.
- SET FORMAT FILE FORMAT
-
Format file untuk file data eksternal.
Format yang valid adalah sebagai berikut:
-
AVRO
-
PARQUET
-
RCFILE
-
SEQUENCEFILE
-
TEXTFILE
-
- ATUR PROPERTI TABEL ('property_name' = 'property_value')
-
Sebuah klausa yang menetapkan definisi tabel untuk properti tabel untuk tabel eksternal.
catatan
Properti tabel peka huruf besar/kecil.
- 'numRows'=' baris_hitungan '
-
Properti yang menetapkan nilai NumRows untuk definisi tabel. Untuk secara eksplisit memperbarui statistik tabel eksternal, atur properti NumRows untuk menunjukkan ukuran tabel. Amazon Redshift tidak menganalisis tabel eksternal untuk menghasilkan statistik tabel yang digunakan pengoptimal kueri untuk menghasilkan paket 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'=' line_count '
-
Properti yang menetapkan jumlah baris untuk dilewati di awal setiap file sumber.
- PARTISI (partition_column = partition_value [,...] SET LOKASI {'s3://bucket/folder '| 's3://bucket/manifest_file'}
-
Klausa yang menetapkan lokasi baru untuk satu atau beberapa 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 PARTISI 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 seharusnya tidak membuat perubahan. Ini juga menunjukkan bahwa perintah harus mengembalikan pesan bahwa partisi ada, daripada berakhir dengan kesalahan. Klausa ini berguna saat membuat skrip, sehingga skrip tidak gagal jika ALTER TABLE mencoba menambahkan partisi yang sudah ada.
- DROP PARTITION (partition_column = partition_value [,...])
-
Sebuah 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 DATASHARES]
Klausul yang mengaktifkan atau menonaktifkan keamanan tingkat baris untuk suatu relasi.
Ketika keamanan tingkat baris diaktifkan untuk suatu relasi, Anda hanya dapat membaca baris yang diizinkan oleh kebijakan keamanan tingkat baris untuk Anda akses. Jika tidak ada kebijakan yang memberi Anda akses ke relasi, Anda tidak dapat melihat baris apa pun dari relasi tersebut. Hanya pengguna super dan pengguna atau peran yang memiliki peran yang dapat mengatur klausa ROW LEVEL SECURITY.
sys:secadmin
Untuk informasi selengkapnya, lihat Keamanan tingkat baris.[TIPE KONJUNGSI {DAN | ATAU}]
Klausa yang memungkinkan Anda memilih jenis konjungsi kebijakan keamanan tingkat baris untuk suatu 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 suatu relasi. Untuk informasi selengkapnya, lihat Menggabungkan beberapa kebijakan per pengguna.UNTUK DATASHARES
Klausa yang menentukan apakah relasi yang dilindungi RLS dapat diakses melalui datashares. Secara default, relasi yang dilindungi RLS 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 berubah.
Jika Anda membuat relasi yang dilindungi RLS dapat diakses melalui datashares, relasi tersebut tidak memiliki keamanan tingkat baris dalam database datashared sisi konsumen. Relasi mempertahankan properti RLS di sisi produsen.
Contoh
Untuk contoh yang menunjukkan cara menggunakan perintah ALTER TABLE, lihat berikut ini.