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
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
UBAH TABEL DITAMBAHKAN
Menambahkan baris ke tabel target dengan memindahkan data dari tabel sumber yang ada. Data dalam tabel sumber dipindahkan ke kolom yang cocok di tabel target. Urutan kolom tidak masalah. Setelah data berhasil ditambahkan ke tabel target, tabel sumber kosong. ALTER TABLE APPEND biasanya jauh lebih cepat daripada operasi serupa CREATE TABLE AS atau IN INSERT TO karena data dipindahkan, tidak diduplikasi.
catatan
ALTER TABLE APPEND memindahkan blok data antara tabel sumber dan tabel target. Untuk meningkatkan kinerja, ALTER TABLE APPEND tidak memadatkan penyimpanan sebagai bagian dari operasi append. Akibatnya, penggunaan penyimpanan meningkat sementara. Untuk merebut kembali ruang, jalankan VAKUM operasi.
Kolom dengan nama yang sama juga harus memiliki atribut kolom yang identik. Jika tabel sumber atau tabel target berisi kolom yang tidak ada di tabel lain, gunakan parameter IGNOREEXTRA atau FILLTARGET untuk menentukan bagaimana kolom tambahan harus dikelola.
Anda tidak dapat menambahkan kolom identitas. Jika kedua tabel menyertakan kolom identitas, perintah gagal. Jika hanya satu tabel yang memiliki kolom identitas, sertakan parameter FILLTARGET atau IGNOREEXTRA. Untuk informasi selengkapnya, lihat ALTER TABLE MENAMBAHKAN catatan penggunaan.
Anda dapat menambahkan kolom GENERATED BY DEFAULT AS IDENTITY. Anda dapat memperbarui kolom yang didefinisikan sebagai GENERATED BY DEFAULT AS IDENTITY dengan nilai-nilai yang Anda berikan. Untuk informasi selengkapnya, lihat ALTER TABLE MENAMBAHKAN catatan penggunaan.
Tabel target harus berupa tabel permanen. Namun, sumbernya dapat berupa tabel permanen atau tampilan terwujud yang dikonfigurasi untuk konsumsi streaming. Kedua objek harus menggunakan gaya distribusi dan kunci distribusi yang sama, jika salah satu didefinisikan. Jika objek diurutkan, kedua objek harus menggunakan gaya pengurutan yang sama dan menentukan kolom yang sama dengan kunci pengurutan.
Perintah ALTER TABLE APPEND secara otomatis dikomit segera setelah operasi selesai. Itu tidak bisa diputar kembali. Anda tidak dapat menjalankan ALTER TABLE APPEND dalam blok transaksi (BEGIN... AKHIR). Untuk informasi lebih lanjut tentang transaksi, lihatTingkat isolasi di Amazon Redshift.
Hak istimewa yang diperlukan
Bergantung pada perintah ALTER TABLE APPEND, salah satu hak istimewa berikut diperlukan:
-
Superuser
-
Pengguna dengan hak istimewa sistem ALTER TABLE
-
Pengguna dengan hak DELETE dan SELECT pada tabel sumber, dan hak istimewa INSERT pada tabel target
Sintaksis
ALTER TABLE target_table_name APPEND FROM [ source_table_name | source_materialized_view_name ] [ IGNOREEXTRA | FILLTARGET ]
Menambahkan dari tampilan terwujud hanya berfungsi dalam kasus di mana tampilan terwujud Anda dikonfigurasi untuk. Streaming konsumsi ke tampilan yang terwujud
Parameter
- nama_tabel_target
-
Nama tabel yang barisnya ditambahkan. Entah menentukan hanya nama tabel atau gunakan format schema_name.table_name untuk menggunakan skema tertentu. Tabel target harus berupa tabel permanen yang ada.
- DARI source_table_name
-
Nama tabel yang menyediakan baris yang akan ditambahkan. Entah menentukan hanya nama tabel atau gunakan format schema_name.table_name untuk menggunakan skema tertentu. Tabel sumber harus berupa tabel permanen yang ada.
- DARI source_materialized_view_name
-
Nama tampilan terwujud yang menyediakan baris yang akan ditambahkan. Menambahkan dari tampilan terwujud hanya berfungsi dalam kasus di mana tampilan terwujud Anda dikonfigurasi untuk. Streaming konsumsi ke tampilan yang terwujud Tampilan sumber yang terwujud harus sudah ada.
- ABAIKAN EKSTRA
-
Kata kunci yang menentukan bahwa jika tabel sumber menyertakan kolom yang tidak ada dalam tabel target, data di kolom tambahan harus dibuang. Anda tidak dapat menggunakan IGNOREEXTRA dengan FILLTARGET.
- TARGET ISI
-
Kata kunci yang menentukan bahwa jika tabel target menyertakan kolom yang tidak ada dalam tabel sumber, kolom harus diisi dengan nilai DEFAULT kolom, jika ada yang ditentukan, atau NULL. Anda tidak dapat menggunakan IGNOREEXTRA dengan FILLTARGET.
ALTER TABLE MENAMBAHKAN catatan penggunaan
-
ALTER TABLE APPEND hanya memindahkan kolom identik dari tabel sumber ke tabel target. Urutan kolom tidak masalah.
-
Jika tabel sumber atau tabel target berisi kolom tambahan, gunakan FILLTARGET atau IGNOREEXTRA sesuai dengan aturan berikut:
-
Jika tabel sumber berisi kolom yang tidak ada di tabel target, sertakan IGNOREEXTRA. Perintah mengabaikan kolom tambahan dalam tabel sumber.
-
Jika tabel target berisi kolom yang tidak ada di tabel sumber, sertakan FILLTARGET. Perintah mengisi kolom tambahan dalam tabel target dengan nilai kolom default atau nilai IDENTITY, jika didefinisikan, atau NULL.
-
Jika tabel sumber dan tabel target berisi kolom tambahan, perintah gagal. Anda tidak dapat menggunakan FILLTARGET dan IGNOREEXTRA.
-
-
Jika kolom dengan nama yang sama tetapi atribut berbeda ada di kedua tabel, perintah gagal. Like-named kolom harus memiliki atribut berikut yang sama:
-
Jenis data
-
Ukuran kolom
-
Pengkodean kompresi
-
Tidak nol
-
Urutkan gaya
-
Urutkan kolom kunci
-
Gaya distribusi
-
Kolom kunci distribusi
-
-
Anda tidak dapat menambahkan kolom identitas. Jika tabel sumber dan tabel target memiliki kolom identitas, perintah gagal. Jika hanya tabel sumber yang memiliki kolom identitas, sertakan parameter IGNOREEXTRA sehingga kolom identitas diabaikan. Jika hanya tabel target yang memiliki kolom identitas, sertakan parameter FILLTARGET sehingga kolom identitas diisi sesuai dengan klausa IDENTITY yang ditentukan untuk tabel. Untuk informasi selengkapnya, lihat DEFAULT.
-
Anda dapat menambahkan kolom identitas default dengan pernyataan ALTER TABLE APPEND. Untuk informasi selengkapnya, lihat CREATE TABLE.
-
Operasi ALTER TABLE APPEND menyimpan kunci eksklusif saat dijalankan di Amazon Redshift streaming tampilan terwujud yang terhubung ke salah satu dari berikut ini:
Aliran data Amazon Kinesis
Topik Streaming Terkelola Amazon untuk Apache Kafka
Aliran eksternal yang didukung, seperti topik Confluent Cloud Kafka
Untuk informasi selengkapnya, lihat Streaming konsumsi ke tampilan yang terwujud.
ALTER TABLE APPEND contoh
Misalkan organisasi Anda memelihara tabel, SALES_MONTHLY, untuk menangkap transaksi penjualan saat ini. Anda ingin memindahkan data dari tabel transaksi ke tabel SALES, setiap bulan.
Anda dapat menggunakan perintah INSERT INTO dan TRUNCATE berikut untuk menyelesaikan tugas.
insert into sales (select * from sales_monthly); truncate sales_monthly;
Namun, Anda dapat melakukan operasi yang sama jauh lebih efisien dengan menggunakan perintah ALTER TABLE APPEND.
Pertama, kueri tabel katalog PG_TABLE_DEF sistem untuk memverifikasi bahwa kedua tabel memiliki kolom yang sama dengan atribut kolom yang identik.
select trim(tablename) as table, "column", trim(type) as type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename like 'sales%'; table | column | type | encoding | distkey | sortkey | notnull -----------+------------+-----------------------------+----------+---------+---------+-------- sales | salesid | integer | lzo | false | 0 | true sales | listid | integer | none | true | 1 | true sales | sellerid | integer | none | false | 2 | true sales | buyerid | integer | lzo | false | 0 | true sales | eventid | integer | mostly16 | false | 0 | true sales | dateid | smallint | lzo | false | 0 | true sales | qtysold | smallint | mostly8 | false | 0 | true sales | pricepaid | numeric(8,2) | delta32k | false | 0 | false sales | commission | numeric(8,2) | delta32k | false | 0 | false sales | saletime | timestamp without time zone | lzo | false | 0 | false salesmonth | salesid | integer | lzo | false | 0 | true salesmonth | listid | integer | none | true | 1 | true salesmonth | sellerid | integer | none | false | 2 | true salesmonth | buyerid | integer | lzo | false | 0 | true salesmonth | eventid | integer | mostly16 | false | 0 | true salesmonth | dateid | smallint | lzo | false | 0 | true salesmonth | qtysold | smallint | mostly8 | false | 0 | true salesmonth | pricepaid | numeric(8,2) | delta32k | false | 0 | false salesmonth | commission | numeric(8,2) | delta32k | false | 0 | false salesmonth | saletime | timestamp without time zone | lzo | false | 0 | false
Selanjutnya, lihat ukuran masing-masing tabel.
select count(*) from sales_monthly; count ------- 2000 (1 row) select count(*) from sales; count ------- 412,214 (1 row)
Sekarang jalankan perintah ALTER TABLE APPEND berikut.
alter table sales append from sales_monthly;
Lihatlah ukuran setiap tabel lagi. Tabel SALES_MONTHLY sekarang memiliki 0 baris, dan tabel SALES telah tumbuh 2000 baris.
select count(*) from sales_monthly; count ------- 0 (1 row) select count(*) from sales; count ------- 414214 (1 row)
Jika tabel sumber memiliki lebih banyak kolom daripada tabel target, tentukan parameter IGNOREEXTRA. Contoh berikut menggunakan parameter IGNOREEXTRA untuk mengabaikan kolom tambahan dalam tabel SALES_LISTING saat menambahkan ke tabel SALES.
alter table sales append from sales_listing ignoreextra;
Jika tabel target memiliki lebih banyak kolom daripada tabel sumber, tentukan parameter FILLTARGET. Contoh berikut menggunakan parameter FILLTARGET untuk mengisi kolom dalam tabel SALES_REPORT yang tidak ada di tabel SALES_MONTH.
alter table sales_report append from sales_month filltarget;
Contoh berikut menunjukkan contoh bagaimana menggunakan ALTER TABLE APPEND dengan tampilan terwujud sebagai sumber.
ALTER TABLE target_tbl APPEND FROM my_streaming_materialized_view;
Tabel dan nama tampilan terwujud dalam contoh ini adalah sampel. Menambahkan dari tampilan terwujud hanya berfungsi dalam kasus di mana tampilan terwujud Anda dikonfigurasi untuk. Streaming konsumsi ke tampilan yang terwujud Ini memindahkan semua catatan dalam tampilan terwujud sumber ke tabel target dengan skema yang sama dengan tampilan terwujud dan membiarkan tampilan terwujud utuh. Ini adalah perilaku yang sama seperti ketika sumber data adalah tabel.