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.
Parameter konversi data
Saat memuat tabel, COPY mencoba untuk secara implisit mengonversi string dalam data sumber ke tipe data kolom target. Jika Anda perlu menentukan konversi yang berbeda dari perilaku default, atau jika konversi default menghasilkan kesalahan, Anda dapat mengelola konversi data dengan menentukan parameter berikut. Untuk informasi selengkapnya tentang sintaks parameter ini, lihat sintaks COPY.
Parameter konversi data
- TANGGAL YANG DITERIMA
-
Memungkinkan format tanggal apa pun, termasuk format yang tidak valid seperti
00/00/00 00:00:00, untuk dimuat tanpa menghasilkan kesalahan. Parameter ini hanya berlaku untuk kolom TIMESTAMP dan DATE. Selalu gunakan ACCEPTANYDATE dengan parameter DATEFORMAT. Jika format tanggal untuk data tidak sesuai dengan spesifikasi DATEFORMAT, Amazon Redshift menyisipkan nilai NULL ke bidang tersebut. - ACCEPTINVCHARS [AS] ['replacement_char']
-
Memungkinkan pemuatan data ke kolom VARCHAR meskipun data berisi UTF-8 karakter yang tidak valid. Ketika ACCEPTINVCHARS ditentukan, COPY mengganti setiap karakter yang tidak valid dengan string dengan panjang yang sama yang terdiri dari UTF-8 karakter yang ditentukan oleh replacement_char. Misalnya, jika karakter pengganti adalah '
^', karakter tiga byte yang tidak valid akan diganti dengan '^^^'.Karakter pengganti dapat berupa karakter ASCII apa pun kecuali NULL. Defaultnya adalah tanda tanya (? ). Untuk informasi tentang UTF-8 karakter yang tidak valid, lihatKesalahan pemuatan karakter multibyte.
COPY mengembalikan jumlah baris yang berisi UTF-8 karakter tidak valid, dan menambahkan entri ke tabel STL_PENGGANTIAN sistem untuk setiap baris yang terpengaruh, hingga maksimum 100 baris untuk setiap irisan node. Karakter tambahan yang tidak valid UTF-8 juga diganti, tetapi peristiwa pengganti tersebut tidak direkam.
Jika ACCEPTINVCHARS tidak ditentukan, COPY mengembalikan kesalahan setiap kali menemukan karakter yang tidak valid. UTF-8
ACCEPTINVCHARS hanya valid untuk kolom VARCHAR.
- BLANKSASNULL
-
Memuat bidang kosong, yang hanya terdiri dari karakter spasi putih, sebagai NULL. Opsi ini hanya berlaku untuk kolom CHAR dan VARCHAR. Bidang kosong untuk tipe data lain, seperti INT, selalu dimuat dengan NULL. Misalnya, string yang berisi tiga karakter spasi secara berurutan (dan tidak ada karakter lain) dimuat sebagai NULL. Perilaku default, tanpa opsi ini, adalah memuat karakter spasi apa adanya.
- DATEFORMAT [AS] {'dateformat_string' | 'otomatis'}
-
Jika tidak ada DATEFORMAT yang ditentukan, format defaultnya adalah
'YYYY-MM-DD'. Misalnya, format valid alternatif adalah'MM-DD-YYYY'.Jika perintah COPY tidak mengenali format nilai tanggal atau waktu Anda, atau jika nilai tanggal atau waktu Anda menggunakan format yang berbeda, gunakan
'auto'argumen dengan parameter DATEFORMAT atau TIMEFORMAT.'auto'Argumen mengenali beberapa format yang tidak didukung saat menggunakan string DATEFORMAT dan TIMEFORMAT. Kata kunci'auto''peka huruf besar/kecil. Untuk informasi selengkapnya, lihat Menggunakan pengenalan otomatis dengan DATEFORMAT dan TIMEFORMAT.Format tanggal dapat mencakup informasi waktu (jam, menit, detik), tetapi informasi ini diabaikan. Kata kunci AS adalah opsional. Untuk informasi selengkapnya, lihat String DATEFORMAT dan TIMEFORMAT.
- EMPTYASNULL
-
Menunjukkan bahwa Amazon Redshift harus memuat bidang CHAR dan VARCHAR kosong sebagai NULL. Bidang kosong untuk tipe data lain, seperti INT, selalu dimuat dengan NULL. Bidang kosong terjadi ketika data berisi dua pembatas secara berurutan tanpa karakter di antara pembatas. EMPTYASNULL dan NULL AS "(string kosong) menghasilkan perilaku yang sama.
- PENGKODEAN [AS] file_encoding
-
Menentukan jenis pengkodean data beban. Perintah COPY mengubah data dari pengkodean yang ditentukan menjadi UTF-8 selama pemuatan.
Nilai yang valid untuk file_encoding adalah sebagai berikut:
-
UTF8 -
UTF16 -
UTF16LE -
UTF16BE -
ISO88591
Nilai default-nya
UTF8.Nama file sumber harus menggunakan UTF-8 encoding.
File-file berikut harus menggunakan UTF-8 pengkodean, bahkan jika pengkodean yang berbeda ditentukan untuk data beban:
-
File manifes
-
File JSONPaths
String argumen yang disediakan dengan parameter berikut harus menggunakan UTF-8:
-
FIXEDWIDTH 'fixedwidth_spec'
-
ACCEPTINVCHARS 'pengganti_char'
-
FORMAT TANGGAL 'dateformat_string'
-
FORMAT WAKTU 'timeformat_string'
-
NULL SEBAGAI 'null_string'
Fixed-width file data harus menggunakan UTF-8 encoding. Lebar bidang didasarkan pada jumlah karakter, bukan jumlah byte.
Semua data beban harus menggunakan pengkodean yang ditentukan. Jika COPY menemukan pengkodean yang berbeda, itu melewatkan file dan mengembalikan kesalahan.
Jika Anda menentukan
UTF16, maka data Anda harus memiliki tanda urutan byte (BOM). Jika Anda tahu apakah UTF-16 data Anda little-endian (LE) atau big-endian (BE), Anda dapat menggunakanUTF16LEatauUTF16BE, terlepas dari keberadaan BOM.Untuk menggunakan ISO-8859-1 pengkodean tentukan
ISO88591. Untuk informasi lebih lanjut, lihat ISO/IEC 8859-1 di Wikipedia. -
- MELARIKAN DIRI
-
Ketika parameter ini ditentukan, karakter garis miring terbalik (
\) dalam data input diperlakukan sebagai karakter escape. Karakter yang segera mengikuti karakter garis miring terbalik dimuat ke dalam tabel sebagai bagian dari nilai kolom saat ini, bahkan jika itu adalah karakter yang biasanya melayani tujuan khusus. Misalnya, Anda dapat menggunakan parameter ini untuk menghindari karakter pembatas, tanda kutip, karakter baris baru yang disematkan, atau karakter escape itu sendiri ketika salah satu karakter ini merupakan bagian yang sah dari nilai kolom.Jika Anda menentukan parameter ESCAPE dalam kombinasi dengan parameter REMOVEQUOTES, Anda dapat menghindari dan mempertahankan tanda kutip (
'atau") yang mungkin dihapus. String null default\N,, berfungsi apa adanya, tetapi juga dapat lolos dalam data input sebagai\\N. Selama Anda tidak menentukan string null alternatif dengan parameter NULL AS,\Ndan\\Nmenghasilkan hasil yang sama.catatan
Karakter kontrol
0x00(NUL) tidak dapat dilepaskan dan harus dihapus dari data input atau dikonversi. Karakter ini diperlakukan sebagai penanda akhir catatan (EOR), menyebabkan sisa catatan terpotong.Anda tidak dapat menggunakan parameter ESCAPE untuk pemuatan FIXEDWIDTH, dan Anda tidak dapat menentukan karakter escape itu sendiri; karakter escape selalu merupakan karakter garis miring terbalik. Juga, Anda harus memastikan bahwa data input berisi karakter escape di tempat yang sesuai.
Berikut adalah beberapa contoh data input dan data yang dimuat yang dihasilkan ketika parameter ESCAPE ditentukan. Hasil untuk baris 4 mengasumsikan bahwa parameter REMOVEQUOTES juga ditentukan. Data input terdiri dari dua bidang yang dibatasi pipa:
1|The quick brown fox\[newline] jumped over the lazy dog. 2| A\\B\\C 3| A \| B \| C 4| 'A Midsummer Night\'s Dream'Data yang dimuat ke kolom 2 terlihat seperti ini:
The quick brown fox jumped over the lazy dog. A\B\C A|B|C A Midsummer Night's Dreamcatatan
Menerapkan karakter escape ke data input untuk beban adalah tanggung jawab pengguna. Satu pengecualian untuk persyaratan ini adalah ketika Anda memuat ulang data yang sebelumnya dibongkar dengan parameter ESCAPE. Dalam hal ini, data sudah akan berisi karakter pelarian yang diperlukan.
Parameter ESCAPE tidak menafsirkan oktal, hex, Unicode, atau notasi urutan escape lainnya. Misalnya, jika data sumber Anda berisi nilai umpan garis oktal (
\012) dan Anda mencoba memuat data ini dengan parameter ESCAPE, Amazon Redshift memuat nilai012ke dalam tabel dan tidak menafsirkan nilai ini sebagai umpan baris yang sedang lolos.Untuk menghindari karakter baris baru dalam data yang berasal dari platform Microsoft Windows, Anda mungkin perlu menggunakan dua karakter escape: satu untuk pengembalian kereta dan satu untuk umpan baris. Atau, Anda dapat menghapus pengembalian kereta sebelum memuat file (misalnya, dengan menggunakan utilitas dos2unix).
- EXPLICIT_ID
-
Gunakan EXPLICIT_IDS dengan tabel yang memiliki kolom IDENTITY jika Anda ingin mengganti nilai yang dibuat secara otomatis dengan nilai eksplisit dari file data sumber untuk tabel. Jika perintah menyertakan daftar kolom, daftar itu harus menyertakan kolom IDENTITY untuk menggunakan parameter ini. Format data untuk nilai EXPLICIT_IDS harus sesuai dengan format IDENTITY yang ditentukan oleh definisi CREATE TABLE.
Saat Anda menjalankan perintah COPY terhadap tabel dengan opsi EXPLICIT_IDS, Amazon Redshift tidak memeriksa keunikan kolom IDENTITY dalam tabel.
Jika kolom didefinisikan dengan GENERATED BY DEFAULT AS IDENTITY, maka kolom tersebut dapat disalin. Nilai dihasilkan atau diperbarui dengan nilai yang Anda berikan. Opsi EXPLICIT_IDS tidak diperlukan. COPY tidak memperbarui tanda air identitas tinggi.
Untuk contoh perintah COPY menggunakan EXPLICIT_IDS, lihat. Muat VENUE dengan nilai eksplisit untuk kolom IDENTITY
- REKAMAN ISI
-
Memungkinkan file data dimuat ketika kolom yang berdekatan hilang di akhir beberapa catatan. Kolom yang hilang dimuat sebagai NULL. Untuk format teks dan CSV, jika kolom yang hilang adalah kolom VARCHAR, string panjang nol dimuat alih-alih NULL. Untuk memuat NULL ke kolom VARCHAR dari teks dan CSV, tentukan kata kunci EMPTYASNULL. Substitusi NULL hanya berfungsi jika definisi kolom mengizinkan NULL.
Misalnya, jika definisi tabel berisi empat kolom CHAR yang dapat dibatalkan, dan catatan berisi nilai-nilai
apple, orange, banana, mango, perintah COPY dapat memuat dan mengisi catatan yang hanya berisi nilai-nilai.apple, orangeNilai CHAR yang hilang akan dimuat sebagai nilai NULL. - ABAIKAN BLANKLINES
-
Mengabaikan baris kosong yang hanya berisi umpan baris dalam file data dan tidak mencoba memuatnya.
- IGNOREHEADER [AS] number_rows
-
Memperlakukan number_rows yang ditentukan sebagai header file dan tidak memuatnya. Gunakan IGNOREHEADER untuk melewati header file di semua file dalam pemuatan paralel.
- NULL SEBAGAI 'null_string'
-
Memuat bidang yang cocok dengan null_string sebagai NULL, di mana null_ string dapat berupa string apa pun. Jika data Anda menyertakan terminator null, juga disebut sebagai NUL (UTF-8 0000) atau biner nol (0x000), COPY memperlakukannya sebagai karakter lainnya. Misalnya, rekaman yang berisi '1' || NUL || '2' disalin sebagai string dengan panjang 3 byte. Jika bidang hanya berisi NUL, Anda dapat menggunakan NULL AS untuk mengganti terminator null dengan NULL dengan menentukan
'\0'atau'\000'—misalnya,NULL AS '\0'atau.NULL AS '\000'Jika bidang berisi string yang diakhiri dengan NUL dan NULL AS ditentukan, string dimasukkan dengan NUL di akhir. Jangan gunakan '\ n' (baris baru) untuk nilai n ull_string. Amazon Redshift menyimpan '\ n' untuk digunakan sebagai pembatas baris. Null_string default adalah '.'\Ncatatan
Jika Anda mencoba memuat nol ke kolom yang didefinisikan sebagai NOT NULL, perintah COPY akan gagal.
- HAPUS KUTIPAN
-
Hapus tanda kutip yang mengelilingi string pada data yang akan masuk. Semua karakter dalam tanda kutip, termasuk delimiter, dipertahankan. Jika string memiliki tanda kutip tunggal atau ganda awal tetapi tidak ada tanda akhir yang sesuai, perintah COPY gagal memuat baris itu dan mengembalikan kesalahan. Tabel berikut menunjukkan beberapa contoh sederhana dari string yang berisi tanda kutip dan nilai yang dimuat yang dihasilkan.
String Input Nilai Dimuat dengan Opsi REMOVEQUOTES “Pembatas adalah karakter pipa (|)” Pembatas adalah karakter pipa (|) 'Hitam' Hitam “Putih” Putih Biru' Biru' 'Biru Nilai tidak dimuat: kondisi kesalahan “Biru Nilai tidak dimuat: kondisi kesalahan '' 'Hitam' '' '' Hitam '' ' ' <white space> - ROUNDEC
-
Membulatkan nilai numerik ketika skala nilai input lebih besar dari skala kolom. Secara default, COPY memotong nilai bila diperlukan agar sesuai dengan skala kolom. Misalnya, jika nilai
20.259dimuat ke kolom DECIMAL (8,2), COPY memotong nilai secara20.25default. Jika ROUNDEC ditentukan, COPY membulatkan nilai ke20.26. Perintah INSERT selalu membulatkan nilai bila diperlukan untuk mencocokkan skala kolom, sehingga perintah COPY dengan parameter ROUNDEC berperilaku sama dengan perintah INSERT. - TIMEFORMAT [AS] {'timeformat_string' | 'otomatis' | 'epochsecs' | 'epochmillisecs'}
-
Menentukan format waktu. Jika tidak ada TIMEFORMAT yang ditentukan, format defaultnya adalah
YYYY-MM-DD HH:MI:SSuntuk kolom TIMESTAMP atauYYYY-MM-DD HH:MI:SSOFuntuk kolom TIMESTAMPTZ, dimana offset dari CoordinOFated Universal Time (UTC). Anda tidak dapat menyertakan penentu zona waktu di time format_string. Untuk memuat data TIMESTAMPTZ yang dalam format yang berbeda dari format default, tentukan 'otomatis'; untuk informasi lebih lanjut, lihat. Menggunakan pengenalan otomatis dengan DATEFORMAT dan TIMEFORMAT Untuk informasi selengkapnya tentang timeformat_string, lihat. String DATEFORMAT dan TIMEFORMAT'auto'Argumen mengenali beberapa format yang tidak didukung saat menggunakan string DATEFORMAT dan TIMEFORMAT. Jika perintah COPY tidak mengenali format nilai tanggal atau waktu Anda, atau jika nilai tanggal dan waktu Anda menggunakan format yang berbeda satu sama lain, gunakan'auto'argumen dengan parameter DATEFORMAT atau TIMEFORMAT. Untuk informasi selengkapnya, lihat Menggunakan pengenalan otomatis dengan DATEFORMAT dan TIMEFORMAT.Jika data sumber Anda direpresentasikan sebagai zaman zaman, yaitu jumlah detik atau milidetik sejak 1 Januari 1970, 00:00:00 UTC, tentukan atau.
'epochsecs''epochmillisecs'Kata
'epochmillisecs'kunci'auto','epochsecs', dan peka huruf besar.Kata kunci AS adalah opsional.
- TRIMBLANK
-
Menghapus karakter spasi putih di belakang dari string VARCHAR. Parameter ini hanya berlaku untuk kolom dengan tipe data VARCHAR.
- TRUNCATECOLUMN
-
Potong data dalam kolom sesuai dengan jumlah karakter sehingga cocok dengan spesifikasi kolom. Berlaku hanya pada kolom dengan tipe data VARCHAR atau CHAR, dan baris berukuran 4 MB atau kurang.