Parameter konversi data - Amazon Redshift

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
ACCEPTANYDATE

Memungkinkan format tanggal apa pun, termasuk format yang tidak valid seperti00/00/00 00:00:00, dimuat tanpa menimbulkan kesalahan. Parameter ini hanya berlaku untuk kolom TIMESTAMP dan DATE. Selalu gunakan ACCEPTANYDATE dengan parameter DATEFORMAT. Jika format tanggal untuk data tidak cocok dengan spesifikasi DATEFORMAT, Amazon Redshift menyisipkan nilai NULL ke bidang tersebut.

TERIMA INVCHARS [AS] ['replacement_char']

Memungkinkan pemuatan data ke kolom VARCHAR bahkan jika data berisi karakter UTF-8 yang tidak valid. Ketika ACCEPTINVCHARS ditentukan, COPY menggantikan setiap karakter UTF-8 yang tidak valid dengan string dengan panjang yang sama yang terdiri dari 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 kecuali NULL. Defaultnya adalah tanda tanya (? ). Untuk informasi tentang karakter UTF-8 yang tidak valid, lihat. Kesalahan pemuatan karakter multibyte

COPY mengembalikan jumlah baris yang berisi karakter UTF-8 yang tidak valid, dan menambahkan entri ke tabel STL_REPLACEMENTS sistem untuk setiap baris yang terpengaruh, hingga maksimum 100 baris untuk setiap irisan node. Karakter UTF-8 tambahan yang tidak valid juga diganti, tetapi peristiwa pengganti tersebut tidak direkam.

Jika ACCEPTINVCHARS tidak ditentukan, COPY mengembalikan kesalahan setiap kali menemukan karakter UTF-8 yang tidak valid.

ACCEPTINVCHARS hanya berlaku 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 berturut-turut (dan tidak ada karakter lain) dimuat sebagai NULL. Perilaku default, tanpa opsi ini, adalah memuat karakter spasi apa adanya.

DATEFORMAT [AS] {'dateformat_string' | 'auto'}

Jika tidak ada DATEFORMAT yang ditentukan, format defaultnya adalah. 'YYYY-MM-DD' Misalnya, format alternatif yang valid 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.

KOSONGNULL

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 berturut-turut tanpa karakter di antara pembatas. EMTTYASNULL 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

Nilai default-nya UTF8.

Nama file sumber harus menggunakan pengkodean UTF-8.

File-file berikut harus menggunakan pengkodean UTF-8, 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'

  • TERIMA INVCHARS 'replacement_char'

  • DATEFORMAT 'dateformat_string'

  • TIMEFORMAT 'timeformat_string'

  • NULL SEBAGAI 'null_string'

File data dengan lebar tetap harus menggunakan pengkodean UTF-8. Lebar bidang didasarkan pada jumlah karakter, bukan jumlah byte.

Semua data beban harus menggunakan pengkodean yang ditentukan. Jika COPY menemukan pengkodean yang berbeda, ia melewatkan file dan mengembalikan kesalahan.

Jika Anda menentukanUTF16, maka data Anda harus memiliki tanda urutan byte (BOM). Jika Anda tahu apakah data UTF-16 Anda adalah little-endian (LE) atau big-endian (BE), Anda dapat menggunakan UTF16LE atauUTF16BE, terlepas dari keberadaan BOM.

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 adalah bagian yang sah dari nilai kolom.

Jika Anda menentukan parameter ESCAPE dalam kombinasi dengan parameter REMOVEQUOTES, Anda dapat melarikan diri dan mempertahankan tanda kutip ('atau") yang mungkin dihapus. String null default,\N, berfungsi apa adanya, tetapi juga dapat diloloskan dalam data input sebagai. \\N Selama Anda tidak menentukan string null alternatif dengan parameter NULL AS, \N dan \\N menghasilkan hasil yang sama.

catatan

Karakter kontrol 0x00 (NUL) tidak dapat lolos 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 beban FIXEDWIDTH, dan Anda tidak dapat menentukan karakter escape itu sendiri; karakter escape selalu karakter garis miring terbalik. Selain itu, 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 saat 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 Dream
catatan

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 escape yang diperlukan.

Parameter ESCAPE tidak menafsirkan oktal, hex, Unicode, atau notasi urutan escape lainnya. Misalnya, jika data sumber Anda berisi nilai umpan baris oktal (\012) dan Anda mencoba memuat data ini dengan parameter ESCAPE, Amazon Redshift memuat 012 nilai ke dalam tabel dan tidak menafsirkan nilai ini sebagai umpan baris yang sedang di-escape.

Untuk menghindari karakter baris baru dalam data yang berasal dari platform Microsoft Windows, Anda mungkin perlu menggunakan dua karakter escape: satu untuk carriage return dan satu untuk line feed. Atau, Anda dapat menghapus pengembalian carriage sebelum memuat file (misalnya, dengan menggunakan utilitas dos2unix).

EKSPLISIT

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 cocok 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 itu 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

FILLRECORD

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, bukan NULL. Untuk memuat NULL ke kolom VARCHAR dari teks dan CSV, tentukan kata kunci EMPTYASNULL. Substitusi NULL hanya berfungsi jika definisi kolom memungkinkan NULL.

Misalnya, jika definisi tabel berisi empat kolom CHAR yang dapat dibatalkan, dan catatan berisi nilaiapple, orange, banana, mango, perintah COPY dapat memuat dan mengisi catatan yang hanya berisi nilai. apple, orange Nilai CHAR yang hilang akan dimuat sebagai nilai NULL.

IGNOREBLANKLINES

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 beban 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 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 —misalnya, atau. '\000' NULL AS '\0' NULL AS '\000' Jika bidang berisi string yang berakhir dengan NUL dan NULL AS ditentukan, string dimasukkan dengan NUL di akhir. Jangan gunakan '\n' (baris baru) untuk nilai null_string. Amazon Redshift mencadangkan '\n' untuk digunakan sebagai pembatas garis. Null_string default adalah '. '\N

catatan

Jika Anda mencoba memuat null ke dalam kolom yang didefinisikan sebagai NOT NULL, perintah COPY akan gagal.

HAPUSQUOTES

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 string yang berisi tanda kutip dan nilai 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 perlu agar sesuai dengan skala kolom. Misalnya, jika nilai dimuat ke kolom DECIMAL (8,2), COPY memotong nilainya secara default. 20.259 20.25 Jika ROUNDEC ditentukan, COPY membulatkan nilainya ke. 20.26 Perintah INSERT selalu membulatkan nilai bila diperlukan untuk mencocokkan skala kolom, sehingga perintah COPY dengan parameter ROUNDEC berperilaku sama seperti perintah INSERT.

TIMEFORMAT [AS] {'timeformat_string' | 'auto' | 'epochsecs' | 'epochmillisecs'}

Menentukan format waktu. Jika tidak ada TIMEFORMAT yang ditentukan, format default adalah YYYY-MM-DD HH:MI:SS untuk kolom TIMESTAMP atau YYYY-MM-DD HH:MI:SSOF untuk kolom TIMESTAMPTZ, di mana offset dari Coordinated OF Universal Time (UTC). Anda tidak dapat menyertakan penentu zona waktu dalam timeformat_string. Untuk memuat data TIMESTAMPTZ yang dalam format yang berbeda dari format default, tentukan 'auto'; untuk informasi selengkapnya, 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 waktu epoch, itu adalah jumlah detik atau milidetik sejak 1 Januari 1970, 00:00:00 UTC, tentukan atau. 'epochsecs' 'epochmillisecs'

Kata kunci 'auto''epochsecs', dan 'epochmillisecs' kata kunci peka huruf besar/kecil.

Kata kunci AS adalah opsional.

TRIMBLANKS

Menghapus karakter spasi putih tertinggal dari string VARCHAR. Parameter ini hanya berlaku untuk kolom dengan tipe data VARCHAR.

TRUNCATECOLUMNS

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.