Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Memuat data dari Amazon S3
Dalam tutorial ini, Anda berjalan melalui proses memuat data ke dalam tabel database Amazon Redshift Anda dari file data dalam bucket Amazon S3 dari awal hingga akhir.
Dalam tutorial ini, Anda akan melakukan hal-hal berikut:
-
Unduh file data yang menggunakan format nilai dipisahkan koma (CSV), dibatasi karakter, dan lebar tetap.
-
Buat bucket Amazon S3 lalu unggah file data ke bucket.
-
Luncurkan cluster Amazon Redshift dan buat tabel database.
-
Gunakan COPY perintah untuk memuat tabel dari file data di Amazon S3.
-
Memecahkan masalah kesalahan pemuatan dan memodifikasi COPY perintah Anda untuk memperbaiki kesalahan.
Perkiraan waktu: 60 menit
Perkiraan biaya: $1,00 per jam untuk cluster
Prasyarat
Anda membutuhkan prasyarat berikut:
-
AWS Akun untuk meluncurkan cluster Amazon Redshift dan membuat ember di Amazon S3.
-
AWS Kredensi (IAMperan) Anda untuk memuat data pengujian dari Amazon S3. Jika Anda membutuhkan IAM peran baru, buka Membuat IAM peran.
-
SQLKlien seperti editor kueri konsol Amazon Redshift.
Tutorial ini dirancang sedemikian rupa sehingga dapat diambil dengan sendirinya. Selain tutorial ini, kami sarankan untuk menyelesaikan tutorial berikut untuk mendapatkan pemahaman yang lebih lengkap tentang cara merancang dan menggunakan database Amazon Redshift:
-
Panduan Memulai Amazon Redshift memandu Anda melalui proses pembuatan klaster Amazon Redshift dan memuat data sampel.
Gambaran Umum
Anda dapat menambahkan data ke tabel Amazon Redshift Anda baik dengan menggunakan INSERT perintah atau dengan menggunakan perintah. COPY Pada skala dan kecepatan gudang data Amazon Redshift, perintahnya berkali-kali lebih cepat dan lebih efisien daripada COPY INSERT perintah.
COPYPerintah ini menggunakan arsitektur Amazon Redshift massively parallel processing MPP () untuk membaca dan memuat data secara paralel dari beberapa sumber data. Anda dapat memuat dari file data di Amazon S3EMR, Amazon, atau host jarak jauh apa pun yang dapat diakses melalui koneksi Secure Shell (SSH). Atau Anda dapat memuat langsung dari tabel Amazon DynamoDB.
Dalam tutorial ini, Anda menggunakan COPY perintah untuk memuat data dari Amazon S3. Banyak prinsip yang disajikan di sini berlaku untuk pemuatan dari sumber data lain juga.
Untuk mempelajari lebih lanjut tentang menggunakan COPY perintah, lihat sumber daya ini:
Langkah 1: Buat cluster
Jika Anda sudah memiliki cluster yang ingin Anda gunakan, Anda dapat melewati langkah ini.
Untuk latihan dalam tutorial ini, gunakan cluster empat simpul.
Untuk membuat klaster DB
-
Masuk ke AWS Management Console dan buka konsol Amazon Redshift di. https://console.aws.amazon.com/redshiftv2/
Menggunakan menu navigasi, pilih dasbor Cluster yang disediakan.
penting
Pastikan Anda memiliki izin yang diperlukan untuk melakukan operasi cluster. Untuk informasi tentang pemberian izin yang diperlukan, lihat Mengotorisasi Amazon Redshift untuk mengakses layanan. AWS
-
Di kanan atas, pilih AWS Wilayah tempat Anda ingin membuat cluster. Untuk keperluan tutorial ini, pilih US West (Oregon).
-
Pada menu navigasi, pilih Clusters, lalu pilih Create cluster. Halaman Create cluster muncul.
-
Pada halaman Create cluster masukkan parameter untuk cluster Anda. Pilih nilai Anda sendiri untuk parameter, kecuali ubah nilai berikut:
Pilih
dc2.large
untuk jenis node.Pilih
4
untuk Jumlah node.Di bagian Izin cluster, pilih IAM peran dari Peran yang tersedia IAM. Peran ini harus menjadi salah satu yang Anda buat sebelumnya dan yang memiliki akses ke Amazon S3. Kemudian pilih IAMPeran asosiasi untuk menambahkannya ke daftar IAMperan Terkait untuk klaster.
-
Pilih Buat klaster.
Ikuti langkah-langkah Panduan Memulai Amazon Redshift untuk terhubung ke klaster Anda dari SQL klien dan menguji koneksi. Anda tidak perlu menyelesaikan langkah-langkah Memulai yang tersisa untuk membuat tabel, mengunggah data, dan mencoba contoh kueri.
Langkah 2: Unduh file data
Pada langkah ini, Anda mengunduh satu set file data sampel ke komputer Anda. Pada langkah berikutnya, Anda mengunggah file ke bucket Amazon S3.
Untuk mengunduh file data
-
Unduh file zip: LoadingDataSampleFiles.zip.
-
Ekstrak file ke folder di komputer Anda.
-
Verifikasi bahwa folder Anda berisi file-file berikut.
customer-fw-manifest customer-fw.tbl-000 customer-fw.tbl-000.bak customer-fw.tbl-001 customer-fw.tbl-002 customer-fw.tbl-003 customer-fw.tbl-004 customer-fw.tbl-005 customer-fw.tbl-006 customer-fw.tbl-007 customer-fw.tbl.log dwdate-tab.tbl-000 dwdate-tab.tbl-001 dwdate-tab.tbl-002 dwdate-tab.tbl-003 dwdate-tab.tbl-004 dwdate-tab.tbl-005 dwdate-tab.tbl-006 dwdate-tab.tbl-007 part-csv.tbl-000 part-csv.tbl-001 part-csv.tbl-002 part-csv.tbl-003 part-csv.tbl-004 part-csv.tbl-005 part-csv.tbl-006 part-csv.tbl-007
Langkah 3: Unggah file ke bucket Amazon S3
Pada langkah ini, Anda membuat bucket Amazon S3 dan mengunggah file data ke bucket.
Untuk mengunggah file ke bucket Amazon S3
-
Buat ember di Amazon S3.
Untuk informasi selengkapnya tentang membuat bucket, lihat Membuat bucket di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
-
Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/
-
Pilih Buat bucket.
-
Pilih sebuah Wilayah AWS.
Buat bucket di Region yang sama dengan cluster Anda. Jika cluster Anda berada di Wilayah AS Barat (Oregon), pilih Wilayah AS Barat (Oregon) (us-west-2).
-
Di kotak Nama Bucket pada kotak dialog Buat ember, masukkan nama bucket.
Nama bucket yang Anda pilih harus unik di antara semua nama bucket yang ada di Amazon S3. Salah satu cara untuk membantu memastikan keunikan adalah dengan mengawali nama bucket Anda dengan nama organisasi Anda. Nama bucket harus mematuhi aturan tertentu. Untuk informasi selengkapnya, buka Pembatasan dan batasan Bucket di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
-
Pilih default yang disarankan untuk opsi lainnya.
-
Pilih Buat bucket.
Saat Amazon S3 berhasil membuat bucket Anda, konsol akan menampilkan bucket kosong Anda di panel Bucket.
-
-
Buat folder.
-
Pilih nama ember baru.
-
Pilih tombol Buat Folder.
-
Beri nama folder baru
load
.catatan
Ember yang Anda buat tidak ada di kotak pasir. Dalam latihan ini, Anda menambahkan objek ke ember sungguhan. Anda dikenakan jumlah nominal untuk waktu Anda menyimpan benda-benda di ember. Untuk informasi lebih lanjut tentang harga Amazon S3, buka halaman harga Amazon S3
.
-
-
Unggah file data ke bucket Amazon S3 baru.
-
Pilih nama folder data.
-
Di wizard Unggah, pilih Tambahkan file.
Ikuti petunjuk konsol Amazon S3 untuk mengunggah semua file yang Anda unduh dan ekstrak,
-
Pilih Unggah.
-
Kredensial Pengguna
COPYPerintah Amazon Redshift harus memiliki akses untuk membaca objek file di bucket Amazon S3. Jika Anda menggunakan kredensi pengguna yang sama untuk membuat bucket Amazon S3 dan menjalankan perintah Amazon Redshift, perintah tersebut memiliki COPY semua izin COPY yang diperlukan. Jika Anda ingin menggunakan kredensi pengguna yang berbeda, Anda dapat memberikan akses dengan menggunakan kontrol akses Amazon S3. COPYPerintah Amazon Redshift memerlukan setidaknya ListBucket dan GetObject izin untuk mengakses objek file di bucket Amazon S3. Untuk informasi selengkapnya tentang mengontrol akses ke sumber daya Amazon S3, buka Mengelola izin akses ke sumber daya Amazon S3 Anda.
Langkah 4: Buat tabel sampel
Untuk tutorial ini, Anda menggunakan satu set lima tabel berdasarkan skema Star Schema Benchmark (SSB). Diagram berikut menunjukkan model SSB data.
SSBTabel mungkin sudah ada di database saat ini. Jika demikian, jatuhkan tabel untuk menghapusnya dari database sebelum Anda membuatnya menggunakan CREATE TABLE perintah di langkah berikutnya. Tabel yang digunakan dalam tutorial ini mungkin memiliki atribut yang berbeda dari tabel yang ada.
Untuk membuat tabel sampel
-
Untuk menjatuhkan SSB tabel, jalankan perintah berikut di SQL klien Anda.
drop table part cascade; drop table supplier; drop table customer; drop table dwdate; drop table lineorder;
-
Jalankan CREATE TABLE perintah berikut di SQL klien Anda.
CREATE TABLE part ( p_partkey INTEGER NOT NULL, p_name VARCHAR(22) NOT NULL, p_mfgr VARCHAR(6), p_category VARCHAR(7) NOT NULL, p_brand1 VARCHAR(9) NOT NULL, p_color VARCHAR(11) NOT NULL, p_type VARCHAR(25) NOT NULL, p_size INTEGER NOT NULL, p_container VARCHAR(10) NOT NULL ); CREATE TABLE supplier ( s_suppkey INTEGER NOT NULL, s_name VARCHAR(25) NOT NULL, s_address VARCHAR(25) NOT NULL, s_city VARCHAR(10) NOT NULL, s_nation VARCHAR(15) NOT NULL, s_region VARCHAR(12) NOT NULL, s_phone VARCHAR(15) NOT NULL ); CREATE TABLE customer ( c_custkey INTEGER NOT NULL, c_name VARCHAR(25) NOT NULL, c_address VARCHAR(25) NOT NULL, c_city VARCHAR(10) NOT NULL, c_nation VARCHAR(15) NOT NULL, c_region VARCHAR(12) NOT NULL, c_phone VARCHAR(15) NOT NULL, c_mktsegment VARCHAR(10) NOT NULL ); CREATE TABLE dwdate ( d_datekey INTEGER NOT NULL, d_date VARCHAR(19) NOT NULL, d_dayofweek VARCHAR(10) NOT NULL, d_month VARCHAR(10) NOT NULL, d_year INTEGER NOT NULL, d_yearmonthnum INTEGER NOT NULL, d_yearmonth VARCHAR(8) NOT NULL, d_daynuminweek INTEGER NOT NULL, d_daynuminmonth INTEGER NOT NULL, d_daynuminyear INTEGER NOT NULL, d_monthnuminyear INTEGER NOT NULL, d_weeknuminyear INTEGER NOT NULL, d_sellingseason VARCHAR(13) NOT NULL, d_lastdayinweekfl VARCHAR(1) NOT NULL, d_lastdayinmonthfl VARCHAR(1) NOT NULL, d_holidayfl VARCHAR(1) NOT NULL, d_weekdayfl VARCHAR(1) NOT NULL ); CREATE TABLE lineorder ( lo_orderkey INTEGER NOT NULL, lo_linenumber INTEGER NOT NULL, lo_custkey INTEGER NOT NULL, lo_partkey INTEGER NOT NULL, lo_suppkey INTEGER NOT NULL, lo_orderdate INTEGER NOT NULL, lo_orderpriority VARCHAR(15) NOT NULL, lo_shippriority VARCHAR(1) NOT NULL, lo_quantity INTEGER NOT NULL, lo_extendedprice INTEGER NOT NULL, lo_ordertotalprice INTEGER NOT NULL, lo_discount INTEGER NOT NULL, lo_revenue INTEGER NOT NULL, lo_supplycost INTEGER NOT NULL, lo_tax INTEGER NOT NULL, lo_commitdate INTEGER NOT NULL, lo_shipmode VARCHAR(10) NOT NULL );
Langkah 5: Jalankan COPY perintah
Anda menjalankan COPY perintah untuk memuat setiap tabel dalam SSB skema. Contoh COPY perintah menunjukkan pemuatan dari format file yang berbeda, menggunakan beberapa opsi COPY perintah, dan pemecahan masalah kesalahan pemuatan.
COPYsintaks perintah
Sintaks COPY perintah dasar adalah sebagai berikut.
COPY table_name [ column_list ] FROM data_source CREDENTIALS access_credentials [options]
Untuk menjalankan COPY perintah, Anda memberikan nilai-nilai berikut.
Nama tabel
Tabel target untuk COPY perintah. Tabel harus sudah ada dalam basis data. Tabel bisa bersifat sementara atau persisten. COPYPerintah menambahkan data input baru ke setiap baris yang ada dalam tabel.
Daftar kolom
Secara default, COPY memuat bidang dari data sumber ke kolom tabel secara berurutan. Anda dapat secara opsional menentukan daftar kolom, yaitu daftar nama kolom yang dipisahkan koma, untuk memetakan bidang data ke kolom tertentu. Anda tidak menggunakan daftar kolom dalam tutorial ini. Untuk informasi selengkapnya, lihat Column List di referensi COPY perintah.
Sumber data
Anda dapat menggunakan COPY perintah untuk memuat data dari bucket Amazon S3, EMR cluster Amazon, host jarak jauh menggunakan SSH koneksi, atau tabel Amazon DynamoDB. Untuk tutorial ini, Anda memuat dari file data di bucket Amazon S3. Saat memuat dari Amazon S3, Anda harus memberikan nama bucket dan lokasi file data. Untuk melakukan ini, berikan jalur objek untuk file data atau lokasi file manifes yang secara eksplisit mencantumkan setiap file data dan lokasinya.
-
Awalan kunci
Objek yang disimpan di Amazon S3 diidentifikasi secara unik oleh kunci objek, yang mencakup nama bucket, nama folder, jika ada, dan nama objek. Sebuah key prefix mengacu pada satu set objek dengan awalan yang sama. Object path adalah key prefix yang digunakan COPY perintah untuk memuat semua objek yang berbagi key prefix. Misalnya, key prefix
custdata.txt
dapat merujuk ke satu file atau ke satu set file, termasuk,custdata.txt.001
custdata.txt.002
, dan sebagainya. -
File manifes
Dalam beberapa kasus, Anda mungkin perlu memuat file dengan awalan yang berbeda, misalnya dari beberapa bucket atau folder. Di tempat lain, Anda mungkin perlu mengecualikan file yang berbagi awalan. Dalam kasus ini, Anda dapat menggunakan file manifes. File manifes secara eksplisit mencantumkan setiap file pemuatan dan kunci objek uniknya. Anda menggunakan file manifes untuk memuat PART tabel nanti dalam tutorial ini.
Kredensial
Untuk mengakses AWS sumber daya yang berisi data yang akan dimuat, Anda harus memberikan kredensi AWS akses bagi pengguna dengan hak istimewa yang memadai. Kredensi ini mencakup peran IAM Amazon Resource Name ()ARN. Untuk memuat data dari Amazon S3, kredensi harus menyertakan dan izin. ListBucket GetObject Kredensi tambahan diperlukan jika data Anda dienkripsi. Untuk informasi selengkapnya, lihat Parameter otorisasi di referensi COPY perintah. Untuk informasi selengkapnya tentang mengelola akses, buka Mengelola izin akses ke sumber daya Amazon S3 Anda.
Pilihan
Anda dapat menentukan sejumlah parameter dengan COPY perintah untuk menentukan format file, mengelola format data, mengelola kesalahan, dan mengontrol fitur lainnya. Dalam tutorial ini, Anda menggunakan opsi dan fitur COPY perintah berikut:
-
Awalan kunci
Untuk informasi tentang cara memuat dari beberapa file dengan menentukan key prefix, lihat. Muat PART tabel menggunakan NULL AS
-
CSVformat
Untuk informasi tentang cara memuat data yang dalam CSV format, lihatMuat PART tabel menggunakan NULL AS.
-
NULLSEBAGAI
Untuk informasi tentang cara memuat PART menggunakan opsi NULL AS, lihatMuat PART tabel menggunakan NULL AS.
-
Format yang dibatasi karakter
Untuk informasi tentang cara menggunakan DELIMITER opsi, lihatMuat SUPPLIER tabel menggunakan REGION.
-
REGION
Untuk informasi tentang cara menggunakan REGION opsi, lihatMuat SUPPLIER tabel menggunakan REGION.
-
Lebar format tetap
Untuk informasi tentang cara memuat CUSTOMER tabel dari data dengan lebar tetap, lihat. Muat CUSTOMER tabel menggunakan MANIFEST
-
MAXERROR
Untuk informasi tentang cara menggunakan MAXERROR opsi, lihatMuat CUSTOMER tabel menggunakan MANIFEST.
-
ACCEPTINVCHARS
Untuk informasi tentang cara menggunakan ACCEPTINVCHARS opsi, lihatMuat CUSTOMER tabel menggunakan MANIFEST.
-
MANIFEST
Untuk informasi tentang cara menggunakan MANIFEST opsi, lihatMuat CUSTOMER tabel menggunakan MANIFEST.
-
DATEFORMAT
Untuk informasi tentang cara menggunakan DATEFORMAT opsi, lihatMuat DWDATE tabel menggunakan DATEFORMAT.
-
GZIP, LZOP dan BZIP2
Untuk informasi tentang cara mengompres file Anda, lihatMuat LINEORDER tabel menggunakan banyak file.
-
COMPUPDATE
Untuk informasi tentang cara menggunakan COMPUPDATE opsi, lihatMuat LINEORDER tabel menggunakan banyak file.
-
Beberapa file
Untuk informasi tentang cara memuat banyak file, lihatMuat LINEORDER tabel menggunakan banyak file.
Memuat SSB tabel
Anda menggunakan COPY perintah berikut untuk memuat setiap tabel dalam SSB skema. Perintah untuk setiap tabel menunjukkan COPY opsi dan teknik pemecahan masalah yang berbeda.
Untuk memuat SSB tabel, ikuti langkah-langkah ini:
Ganti nama bucket dan AWS kredensialnya
COPYPerintah dalam tutorial ini disajikan dalam format berikut.
copy table from 's3://
<your-bucket-name>
/load/key_prefix' credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>
:role/<role-name>
' options;
Untuk setiap COPY perintah, lakukan hal berikut:
-
Ganti
<your-bucket-name>
dengan nama ember di wilayah yang sama dengan cluster Anda.Langkah ini mengasumsikan bucket dan cluster berada di wilayah yang sama. Atau, Anda dapat menentukan wilayah menggunakan REGION opsi dengan COPY perintah.
-
Ganti
<aws-account-id>
and<role-name>
dengan IAM peran Akun AWS dan peran Anda sendiri. Segmen string kredensial yang diapit tanda kutip tunggal tidak boleh berisi spasi atau jeda baris. Perhatikan bahwa ARN mungkin sedikit berbeda dalam format dari sampel. Yang terbaik adalah menyalin peran ARN untuk dari IAM konsol, untuk memastikan bahwa itu akurat, saat Anda menjalankan COPY perintah.
Muat PART tabel menggunakan NULL AS
Pada langkah ini, Anda menggunakan opsi CSV dan NULL AS untuk memuat PART tabel.
COPYPerintah dapat memuat data dari beberapa file secara paralel, yang jauh lebih cepat daripada memuat dari satu file. Untuk mendemonstrasikan prinsip ini, data untuk setiap tabel dalam tutorial ini dibagi menjadi delapan file, meskipun file-filenya sangat kecil. Pada langkah selanjutnya, Anda membandingkan perbedaan waktu antara memuat dari satu file dan memuat dari beberapa file. Untuk informasi selengkapnya, lihat Memuat file data.
Awalan kunci
Anda dapat memuat dari beberapa file dengan menentukan key prefix untuk kumpulan file, atau dengan secara eksplisit mencantumkan file dalam file manifes. Pada langkah ini, Anda menggunakan key prefix. Pada langkah selanjutnya, Anda menggunakan file manifes. Prefix key 's3://amzn-s3-demo-bucket/load/part-csv.tbl'
memuat kumpulan file berikut dalam folder. load
part-csv.tbl-000 part-csv.tbl-001 part-csv.tbl-002 part-csv.tbl-003 part-csv.tbl-004 part-csv.tbl-005 part-csv.tbl-006 part-csv.tbl-007
CSVformat
CSV, yang merupakan singkatan dari nilai dipisahkan koma, adalah format umum yang digunakan untuk mengimpor dan mengekspor data spreadsheet. CSVlebih fleksibel daripada format yang dibatasi koma karena memungkinkan Anda untuk memasukkan string yang dikutip dalam bidang. Karakter tanda kutip default untuk CSV format COPY from adalah tanda kutip ganda ("), tetapi Anda dapat menentukan karakter tanda kutip lain dengan menggunakan opsi AS. QUOTE Saat Anda menggunakan karakter tanda kutip di dalam bidang, lepaskan karakter dengan karakter tanda kutip tambahan.
Kutipan berikut dari file data CSV -diformat untuk PART tabel menunjukkan string terlampir dalam tanda kutip ganda (). "LARGE ANODIZED
BRASS"
Ini juga menunjukkan string tertutup dalam dua tanda kutip ganda dalam string yang dikutip (). "MEDIUM ""BURNISHED"" TIN"
15,dark sky,MFGR#3,MFGR#47,MFGR#3438,indigo,"LARGE ANODIZED BRASS",45,LG CASE 22,floral beige,MFGR#4,MFGR#44,MFGR#4421,medium,"PROMO, POLISHED BRASS",19,LG DRUM 23,bisque slate,MFGR#4,MFGR#41,MFGR#4137,firebrick,"MEDIUM ""BURNISHED"" TIN",42,JUMBO JAR
Data untuk PART tabel berisi karakter yang COPY menyebabkan kegagalan. Dalam latihan ini, Anda memecahkan masalah kesalahan dan memperbaikinya.
Untuk memuat data yang dalam CSV format, tambahkan csv
ke COPY perintah Anda. Jalankan perintah berikut untuk memuat PART tabel.
copy part from 's3://
<your-bucket-name>
/load/part-csv.tbl' credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>
:role/<role-name>
' csv;
Anda mungkin mendapatkan pesan kesalahan yang mirip dengan berikut ini.
An error occurred when executing the SQL command: copy part from 's3://amzn-s3-demo-bucket/load/part-csv.tbl' credentials' ... ERROR: Load into table 'part' failed. Check 'stl_load_errors' system table for details. [SQL State=XX000] Execution time: 1.46s 1 statement(s) failed. 1 statement(s) failed.
Untuk mendapatkan informasi lebih lanjut tentang kesalahan, kueri ERRORS tabel STL LOAD _ _. Kueri berikut menggunakan SUBSTRING fungsi untuk mempersingkat kolom agar mudah dibaca dan menggunakan LIMIT 10 untuk mengurangi jumlah baris yang dikembalikan. Anda dapat menyesuaikan nilai substring(filename,22,25)
untuk memungkinkan panjang nama bucket Anda.
select query, substring(filename,22,25) as filename,line_number as line, substring(colname,0,12) as column, type, position as pos, substring(raw_line,0,30) as line_text, substring(raw_field_value,0,15) as field_text, substring(err_reason,0,45) as reason from stl_load_errors order by query desc limit 10;
query | filename | line | column | type | pos | --------+-------------------------+-----------+------------+------------+-----+---- 333765 | part-csv.tbl-000 | 1 | | | 0 | line_text | field_text | reason ------------------+------------+---------------------------------------------- 15,NUL next, | | Missing newline: Unexpected character 0x2c f
NULLSEBAGAI
File part-csv.tbl
data menggunakan karakter NUL terminator (\x000
atau\x0
) untuk menunjukkan NULL nilai.
catatan
Meskipun ejaannya sangat mirip, NUL dan NULL tidak sama. NULadalah karakter UTF -8 dengan codepoint x000
yang sering digunakan untuk menunjukkan akhir record ()EOR. NULLadalah SQL nilai yang mewakili tidak adanya data.
Secara default, COPY memperlakukan karakter NUL terminator sebagai EOR karakter dan mengakhiri catatan, yang sering menghasilkan hasil yang tidak terduga atau kesalahan. Tidak ada metode standar tunggal untuk menunjukkan NULL dalam data teks. Dengan demikian, opsi COPY perintah NULL AS memungkinkan Anda menentukan karakter mana yang akan diganti NULL saat memuat tabel. Dalam contoh ini, Anda COPY ingin memperlakukan karakter NUL terminator sebagai NULL nilai.
catatan
Kolom tabel yang menerima NULL nilai harus dikonfigurasi sebagai nullable. Artinya, itu tidak boleh termasuk NOT NULL kendala dalam spesifikasi. CREATE TABLE
Untuk memuat PART menggunakan opsi NULL AS, jalankan COPY perintah berikut.
copy part from 's3://
<your-bucket-name>
/load/part-csv.tbl' credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>
:role/<role-name>
' csv null as '\000';
Untuk memverifikasi NULL nilai yang COPY dimuat, jalankan perintah berikut untuk memilih hanya baris yang berisiNULL.
select p_partkey, p_name, p_mfgr, p_category from part where p_mfgr is null;
p_partkey | p_name | p_mfgr | p_category -----------+----------+--------+------------ 15 | NUL next | | MFGR#47 81 | NUL next | | MFGR#23 133 | NUL next | | MFGR#44 (2 rows)
Muat SUPPLIER tabel menggunakan REGION
Pada langkah ini, Anda menggunakan REGION opsi DELIMITER dan untuk memuat SUPPLIER tabel.
catatan
File untuk memuat SUPPLIER tabel disediakan dalam ember AWS sampel. Anda tidak perlu mengunggah file untuk langkah ini.
Format yang Dibatasi Karakter
Bidang dalam file yang dibatasi karakter dipisahkan oleh karakter tertentu, seperti karakter pipa (|), koma (,) atau tab (\ t). File yang dibatasi karakter dapat menggunakan ASCII karakter tunggal apa pun, termasuk salah satu karakter yang tidak dicetakASCII, sebagai pembatas. Anda menentukan karakter pembatas dengan menggunakan opsi. DELIMITER Pembatas default adalah karakter pipa (|).
Kutipan berikut dari data untuk SUPPLIER tabel menggunakan format pipe-delimited.
1|1|257368|465569|41365|19950218|2-HIGH|0|17|2608718|9783671|4|2504369|92072|2|19950331|TRUCK 1|2|257368|201928|8146|19950218|2-HIGH|0|36|6587676|9783671|9|5994785|109794|6|19950416|MAIL
REGION
Jika memungkinkan, Anda harus menemukan data pemuatan Anda di AWS wilayah yang sama dengan cluster Amazon Redshift Anda. Jika data dan cluster Anda berada di wilayah yang sama, Anda mengurangi latensi dan menghindari biaya transfer data lintas wilayah. Untuk informasi selengkapnya, silakan lihat Praktik terbaik Amazon Redshift untuk memuat data
Jika Anda harus memuat data dari AWS wilayah yang berbeda, gunakan REGION opsi untuk menentukan AWS wilayah di mana data beban berada. Jika Anda menentukan wilayah, semua data pemuatan, termasuk file manifes, harus berada di wilayah bernama. Untuk informasi selengkapnya, lihat REGION.
Jika klaster Anda berada di Wilayah AS Timur (Virginia N.), jalankan perintah berikut untuk memuat SUPPLIER tabel dari data yang dibatasi pipa di bucket Amazon S3 yang terletak di Wilayah AS Barat (Oregon). Untuk contoh ini, jangan ubah nama bucket.
copy supplier from 's3://awssampledbuswest2/ssbgz/supplier.tbl' credentials 'aws_iam_role=arn:aws:iam::
<aws-account-id>
:role/<role-name>
' delimiter '|' gzip region 'us-west-2';
Jika klaster Anda tidak berada di wilayah US East (Virginia N.), jalankan perintah berikut untuk memuat SUPPLIER tabel dari data yang dibatasi pipa di bucket Amazon S3 yang terletak di wilayah US East (Virginia N.). Untuk contoh ini, jangan ubah nama bucket.
copy supplier from 's3://awssampledb/ssbgz/supplier.tbl' credentials 'aws_iam_role=arn:aws:iam::
<aws-account-id>
:role/<role-name>
' delimiter '|' gzip region 'us-east-1';
Muat CUSTOMER tabel menggunakan MANIFEST
Pada langkah ini, Anda menggunakanFIXEDWIDTH,MAXERROR,ACCEPTINVCHARS, dan MANIFEST opsi untuk memuat CUSTOMER tabel.
Data sampel untuk latihan ini berisi karakter yang menyebabkan kesalahan saat COPY mencoba memuatnya. Anda menggunakan MAXERRORS opsi dan tabel ERRORS sistem STL LOAD _ _ untuk memecahkan masalah kesalahan pemuatan dan kemudian menggunakan MANIFEST opsi ACCEPTINVCHARS dan untuk menghilangkan kesalahan.
Format Lebar Tetap
Format Fixed-width mendefinisikan setiap bidang sebagai jumlah karakter tetap, bukan memisahkan bidang dengan pembatas. Kutipan berikut dari data untuk CUSTOMER tabel menggunakan format fixed-width.
1 Customer#000000001 IVhzIApeRb MOROCCO 0MOROCCO AFRICA 25-705 2 Customer#000000002 XSTf4,NCwDVaWNe6tE JORDAN 6JORDAN MIDDLE EAST 23-453 3 Customer#000000003 MG9kdTD ARGENTINA5ARGENTINAAMERICA 11-783
Urutan pasangan label/lebar harus sesuai dengan urutan kolom tabel dengan tepat. Untuk informasi selengkapnya, lihat FIXEDWIDTH.
String spesifikasi lebar tetap untuk data CUSTOMER tabel adalah sebagai berikut.
fixedwidth 'c_custkey:10, c_name:25, c_address:25, c_city:10, c_nation:15, c_region :12, c_phone:15,c_mktsegment:10'
Untuk memuat CUSTOMER tabel dari data dengan lebar tetap, jalankan perintah berikut.
copy customer from 's3://
<your-bucket-name>
/load/customer-fw.tbl' credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>
:role/<role-name>
' fixedwidth 'c_custkey:10, c_name:25, c_address:25, c_city:10, c_nation:15, c_region :12, c_phone:15,c_mktsegment:10';
Anda harus mendapatkan pesan kesalahan, mirip dengan yang berikut ini.
An error occurred when executing the SQL command: copy customer from 's3://amzn-s3-demo-bucket/load/customer-fw.tbl' credentials'... ERROR: Load into table 'customer' failed. Check 'stl_load_errors' system table for details. [SQL State=XX000] Execution time: 2.95s 1 statement(s) failed.
MAXERROR
Secara default, pertama kali COPY menemukan kesalahan, perintah gagal dan mengembalikan pesan kesalahan. Untuk menghemat waktu selama pengujian, Anda dapat menggunakan MAXERROR opsi untuk menginstruksikan COPY untuk melewati sejumlah kesalahan tertentu sebelum gagal. Karena kami mengharapkan kesalahan saat pertama kali kami menguji pemuatan data CUSTOMER tabel, tambahkan maxerror 10
ke COPY perintah.
Untuk menguji menggunakan MAXERROR opsi FIXEDWIDTH dan, jalankan perintah berikut.
copy customer from 's3://
<your-bucket-name>
/load/customer-fw.tbl' credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>
:role/<role-name>
' fixedwidth 'c_custkey:10, c_name:25, c_address:25, c_city:10, c_nation:15, c_region :12, c_phone:15,c_mktsegment:10' maxerror 10;
Kali ini, alih-alih pesan kesalahan, Anda mendapatkan pesan peringatan yang mirip dengan yang berikut ini.
Warnings: Load into table 'customer' completed, 112497 record(s) loaded successfully. Load into table 'customer' completed, 7 record(s) could not be loaded. Check 'stl_load_errors' system table for details.
Peringatan menunjukkan bahwa COPY mengalami tujuh kesalahan. Untuk memeriksa kesalahan, kueri ERRORS tabel STL LOAD _ _, seperti yang ditunjukkan pada contoh berikut.
select query, substring(filename,22,25) as filename,line_number as line, substring(colname,0,12) as column, type, position as pos, substring(raw_line,0,30) as line_text, substring(raw_field_value,0,15) as field_text, substring(err_reason,0,45) as error_reason from stl_load_errors order by query desc, filename limit 7;
Hasil ERRORS kueri STL _ LOAD _ akan terlihat mirip dengan yang berikut ini.
query | filename | line | column | type | pos | line_text | field_text | error_reason --------+---------------------------+------+-----------+------------+-----+-------------------------------+------------+---------------------------------------------- 334489 | customer-fw.tbl.log | 2 | c_custkey | int4 | -1 | customer-fw.tbl | customer-f | Invalid digit, Value 'c', Pos 0, Type: Integ 334489 | customer-fw.tbl.log | 6 | c_custkey | int4 | -1 | Complete | Complete | Invalid digit, Value 'C', Pos 0, Type: Integ 334489 | customer-fw.tbl.log | 3 | c_custkey | int4 | -1 | #Total rows | #Total row | Invalid digit, Value '#', Pos 0, Type: Integ 334489 | customer-fw.tbl.log | 5 | c_custkey | int4 | -1 | #Status | #Status | Invalid digit, Value '#', Pos 0, Type: Integ 334489 | customer-fw.tbl.log | 1 | c_custkey | int4 | -1 | #Load file | #Load file | Invalid digit, Value '#', Pos 0, Type: Integ 334489 | customer-fw.tbl000 | 1 | c_address | varchar | 34 | 1 Customer#000000001 | .Mayag.ezR | String contains invalid or unsupported UTF8 334489 | customer-fw.tbl000 | 1 | c_address | varchar | 34 | 1 Customer#000000001 | .Mayag.ezR | String contains invalid or unsupported UTF8 (7 rows)
Dengan memeriksa hasilnya, Anda dapat melihat bahwa ada dua pesan di error_reasons
kolom:
-
Invalid digit, Value '#', Pos 0, Type: Integ
Kesalahan ini disebabkan oleh
customer-fw.tbl.log
file. Masalahnya adalah itu adalah file log, bukan file data, dan tidak boleh dimuat. Anda dapat menggunakan file manifes untuk menghindari memuat file yang salah. -
String contains invalid or unsupported UTF8
Tipe VARCHAR data mendukung multibyte UTF -8 karakter hingga tiga byte. Jika data pemuatan berisi karakter yang tidak didukung atau tidak valid, Anda dapat menggunakan ACCEPTINVCHARS opsi untuk mengganti setiap karakter yang tidak valid dengan karakter alternatif yang ditentukan.
Masalah lain dengan beban lebih sulit dideteksi — beban menghasilkan hasil yang tidak terduga. Untuk menyelidiki masalah ini, jalankan perintah berikut untuk query CUSTOMER tabel.
select c_custkey, c_name, c_address from customer order by c_custkey limit 10;
c_custkey | c_name | c_address -----------+---------------------------+--------------------------- 2 | Customer#000000002 | XSTf4,NCwDVaWNe6tE 2 | Customer#000000002 | XSTf4,NCwDVaWNe6tE 3 | Customer#000000003 | MG9kdTD 3 | Customer#000000003 | MG9kdTD 4 | Customer#000000004 | XxVSJsL 4 | Customer#000000004 | XxVSJsL 5 | Customer#000000005 | KvpyuHCplrB84WgAi 5 | Customer#000000005 | KvpyuHCplrB84WgAi 6 | Customer#000000006 | sKZz0CsnMD7mp4Xd0YrBvx 6 | Customer#000000006 | sKZz0CsnMD7mp4Xd0YrBvx (10 rows)
Baris harus unik, tetapi ada duplikat.
Cara lain untuk memeriksa hasil yang tidak terduga adalah dengan memverifikasi jumlah baris yang dimuat. Dalam kasus kami, 100000 baris seharusnya dimuat, tetapi pesan pemuatan melaporkan memuat 112497 catatan. Baris tambahan dimuat karena COPY memuat file asing,. customer-fw.tbl0000.bak
Dalam latihan ini, Anda menggunakan file manifes untuk menghindari memuat file yang salah.
ACCEPTINVCHARS
Secara default, ketika COPY menemukan karakter yang tidak didukung oleh tipe data kolom, ia melewatkan baris dan mengembalikan kesalahan. Untuk informasi tentang karakter UTF -8 yang tidak valid, lihat. Kesalahan pemuatan karakter multibyte
Anda dapat menggunakan MAXERRORS opsi untuk mengabaikan kesalahan dan melanjutkan pemuatan, lalu kueri STL _ LOAD _ ERRORS untuk menemukan karakter yang tidak valid, dan kemudian memperbaiki file data. Namun, paling MAXERRORS baik digunakan untuk memecahkan masalah beban dan umumnya tidak boleh digunakan dalam lingkungan produksi.
ACCEPTINVCHARSOpsi ini biasanya merupakan pilihan yang lebih baik untuk mengelola karakter yang tidak valid. ACCEPTINVCHARSmenginstruksikan COPY untuk mengganti setiap karakter yang tidak valid dengan karakter valid yang ditentukan dan melanjutkan operasi pemuatan. Anda dapat menentukan ASCII karakter yang valid, kecualiNULL, sebagai karakter pengganti. Karakter pengganti default adalah tanda tanya (? ). COPYmenggantikan karakter multibyte dengan string pengganti dengan panjang yang sama. Misalnya, karakter 4-byte akan diganti dengan'????'
.
COPYmengembalikan jumlah baris yang berisi karakter UTF -8 tidak valid. Ini juga menambahkan entri ke tabel REPLACEMENTS sistem STL _ untuk setiap baris yang terpengaruh, hingga maksimum 100 baris per irisan node. Karakter tambahan UTF -8 yang tidak valid juga diganti, tetapi peristiwa pengganti tersebut tidak direkam.
ACCEPTINVCHARShanya berlaku untuk VARCHAR kolom.
Untuk langkah ini, Anda menambahkan ACCEPTINVCHARS dengan karakter pengganti'^'
.
MANIFEST
Ketika Anda COPY dari Amazon S3 menggunakan key prefix, ada risiko bahwa Anda mungkin memuat tabel yang tidak diinginkan. Misalnya, 's3://amzn-s3-demo-bucket/load/
folder berisi delapan file data yang berbagi key prefixcustomer-fw.tbl
:customer-fw.tbl0000
,customer-fw.tbl0001
, dan seterusnya. Namun, folder yang sama juga berisi file customer-fw.tbl.log
asing dan. customer-fw.tbl-0001.bak
Untuk memastikan bahwa Anda memuat semua file yang benar, dan hanya file yang benar, gunakan file manifes. Manifes adalah file teks dalam JSON format yang secara eksplisit mencantumkan kunci objek unik untuk setiap file sumber yang akan dimuat. Objek file dapat berada di folder yang berbeda atau ember yang berbeda, tetapi mereka harus berada di wilayah yang sama. Untuk informasi selengkapnya, lihat MANIFEST.
Berikut ini menunjukkan customer-fw-manifest
teks.
{ "entries": [ {"url":"s3://
<your-bucket-name>
/load/customer-fw.tbl-000"}, {"url":"s3://<your-bucket-name>
/load/customer-fw.tbl-001"}, {"url":"s3://<your-bucket-name>
/load/customer-fw.tbl-002"}, {"url":"s3://<your-bucket-name>
/load/customer-fw.tbl-003"}, {"url":"s3://<your-bucket-name>
/load/customer-fw.tbl-004"}, {"url":"s3://<your-bucket-name>
/load/customer-fw.tbl-005"}, {"url":"s3://<your-bucket-name>
/load/customer-fw.tbl-006"}, {"url":"s3://<your-bucket-name>
/load/customer-fw.tbl-007"} ] }
Untuk memuat data untuk CUSTOMER tabel menggunakan file manifes
-
Buka file
customer-fw-manifest
di editor teks. -
Ganti
<your-bucket-name>
dengan nama ember Anda. -
Simpan file tersebut.
-
Unggah file ke folder muat di bucket Anda.
-
Jalankan perintah COPY berikut.
copy customer from 's3://
<your-bucket-name>
/load/customer-fw-manifest' credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>
:role/<role-name>
' fixedwidth 'c_custkey:10, c_name:25, c_address:25, c_city:10, c_nation:15, c_region :12, c_phone:15,c_mktsegment:10' maxerror 10 acceptinvchars as '^' manifest;
Muat DWDATE tabel menggunakan DATEFORMAT
Pada langkah ini, Anda menggunakan DATEFORMAT opsi DELIMITER dan untuk memuat DWDATE tabel.
Saat memuat DATE dan TIMESTAMP kolom, COPY mengharapkan format default, yaitu YYYY-MM-DD untuk tanggal dan YYYY-MM-DD HH: MI: SS untuk stempel waktu. Jika data beban tidak menggunakan format default, Anda dapat TIMEFORMAT menggunakan DATEFORMAT dan menentukan format.
Kutipan berikut menunjukkan format tanggal dalam tabel. DWDATE Perhatikan bahwa format tanggal di kolom dua tidak konsisten.
19920104 1992-01-04 Sunday January 1992 199201 Jan1992 1 4 4 1... 19920112 January 12, 1992 Monday January 1992 199201 Jan1992 2 12 12 1... 19920120 January 20, 1992 Tuesday January 1992 199201 Jan1992 3 20 20 1...
DATEFORMAT
Anda hanya dapat menentukan satu format tanggal. Jika data pemuatan berisi format yang tidak konsisten, mungkin dalam kolom yang berbeda, atau jika format tidak diketahui pada waktu muat, Anda gunakan DATEFORMAT dengan 'auto'
argumen. Kapan 'auto'
ditentukan, COPY mengenali format tanggal atau waktu yang valid dan mengonversinya ke format default. 'auto'
Opsi ini mengenali beberapa format yang tidak didukung saat menggunakan DATEFORMAT dan TIMEFORMAT string. Untuk informasi selengkapnya, lihat Menggunakan pengenalan otomatis dengan DATEFORMAT dan TIMEFORMAT.
Untuk memuat DWDATE tabel, jalankan COPY perintah berikut.
copy dwdate from 's3://
<your-bucket-name>
/load/dwdate-tab.tbl' credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>
:role/<role-name>
' delimiter '\t' dateformat 'auto';
Muat LINEORDER tabel menggunakan banyak file
Langkah ini menggunakan COMPUPDATE opsi GZIP dan untuk memuat LINEORDER tabel.
Dalam latihan ini, Anda memuat LINEORDER tabel dari satu file data dan kemudian memuatnya lagi dari beberapa file. Melakukan hal ini memungkinkan Anda untuk membandingkan waktu muat untuk dua metode.
catatan
File untuk memuat LINEORDER tabel disediakan dalam ember AWS sampel. Anda tidak perlu mengunggah file untuk langkah ini.
GZIP, LZOP dan BZIP2
Anda dapat mengompres file Anda menggunakan format kompresi gzip, lzop, atau bzip2. Saat memuat dari file terkompresi, COPY buka kompres file selama proses pemuatan. Mengompresi file Anda menghemat ruang penyimpanan dan mempersingkat waktu upload.
COMPUPDATE
Saat COPY memuat tabel kosong tanpa pengkodean kompresi, ia menganalisis data beban untuk menentukan pengkodean yang optimal. Kemudian mengubah tabel untuk menggunakan pengkodean tersebut sebelum memulai beban. Proses analisis ini membutuhkan waktu, tetapi terjadi, paling banyak, sekali per tabel. Untuk menghemat waktu, Anda dapat melewati langkah ini dengan COMPUPDATE mematikan. Untuk mengaktifkan evaluasi COPY waktu yang akurat, Anda COMPUPDATE mematikan langkah ini.
Beberapa File
COPYPerintah dapat memuat data dengan sangat efisien ketika memuat dari beberapa file secara paralel, bukan dari satu file. Anda dapat membagi data Anda menjadi file sehingga jumlah file adalah kelipatan dari jumlah irisan di cluster Anda. Jika ya, Amazon Redshift membagi beban kerja dan mendistribusikan data secara merata di antara irisan. Jumlah irisan per node tergantung pada ukuran node cluster. Untuk informasi selengkapnya tentang jumlah irisan yang dimiliki setiap ukuran node, buka Tentang cluster dan node di Panduan Manajemen Pergeseran Merah Amazon.
Misalnya, node komputasi dc2.large yang digunakan dalam tutorial ini masing-masing memiliki dua irisan, sehingga cluster empat simpul memiliki delapan irisan. Pada langkah sebelumnya, data pemuatan terkandung dalam delapan file, meskipun file-file tersebut sangat kecil. Pada langkah ini, Anda membandingkan perbedaan waktu antara memuat dari satu file besar dan memuat dari beberapa file.
File yang Anda gunakan untuk tutorial ini berisi sekitar 15 juta catatan dan menempati sekitar 1,2 GB. File-file ini sangat kecil dalam skala Amazon Redshift, tetapi cukup untuk menunjukkan keunggulan kinerja pemuatan dari banyak file. File-file tersebut cukup besar sehingga waktu yang dibutuhkan untuk mengunduhnya dan kemudian mengunggahnya ke Amazon S3 berlebihan untuk tutorial ini. Dengan demikian, Anda memuat file langsung dari ember AWS sampel.
Tangkapan layar berikut menunjukkan file data untukLINEORDER.
Untuk mengevaluasi kinerja COPY dengan banyak file
-
Jalankan perintah berikut ke COPY dari satu file. Jangan mengubah nama bucket.
copy lineorder from 's3://awssampledb/load/lo/lineorder-single.tbl' credentials 'aws_iam_role=arn:aws:iam::
<aws-account-id>
:role/<role-name>
' gzip compupdate off region 'us-east-1'; -
Hasil Anda harus serupa dengan yang berikut ini. Perhatikan waktu eksekusi.
Warnings: Load into table 'lineorder' completed, 14996734 record(s) loaded successfully. 0 row(s) affected. copy executed successfully Execution time: 51.56s
-
Jalankan perintah berikut ke COPY dari beberapa file. Jangan mengubah nama bucket.
copy lineorder from 's3://awssampledb/load/lo/lineorder-multi.tbl' credentials 'aws_iam_role=arn:aws:iam::
<aws-account-id>
:role/<role-name>
' gzip compupdate off region 'us-east-1'; -
Hasil Anda harus serupa dengan yang berikut ini. Perhatikan waktu eksekusi.
Warnings: Load into table 'lineorder' completed, 14996734 record(s) loaded successfully. 0 row(s) affected. copy executed successfully Execution time: 17.7s
-
Bandingkan waktu eksekusi.
Dalam contoh kita, waktu untuk memuat 15 juta catatan menurun dari 51,56 detik menjadi 17,7 detik, pengurangan 65,7 persen.
Hasil ini didasarkan pada penggunaan cluster empat simpul. Jika cluster Anda memiliki lebih banyak node, penghematan waktu dikalikan. Untuk cluster Amazon Redshift yang khas, dengan puluhan hingga ratusan node, perbedaannya bahkan lebih dramatis. Jika Anda memiliki cluster node tunggal, ada sedikit perbedaan antara waktu eksekusi.
Langkah 6: Vakum dan analisis database
Setiap kali Anda menambahkan, menghapus, atau memodifikasi sejumlah besar baris, Anda harus menjalankan VACUUM perintah dan kemudian ANALYZE perintah. Vakum memulihkan ruang dari baris yang dihapus dan mengembalikan urutan pengurutan. ANALYZEPerintah memperbarui metadata statistik, yang memungkinkan pengoptimal kueri menghasilkan rencana kueri yang lebih akurat. Untuk informasi selengkapnya, lihat Tabel penyedot debu.
Jika Anda memuat data dalam urutan kunci sortir, ruang hampa cepat. Dalam tutorial ini, Anda menambahkan sejumlah besar baris, tetapi Anda menambahkannya ke tabel kosong. Karena itu, tidak perlu menggunakan, dan Anda tidak menghapus baris apa pun. COPYsecara otomatis memperbarui statistik setelah memuat tabel kosong, jadi statistik Anda seharusnya up-to-date. Namun, sebagai masalah tata graha yang baik, Anda menyelesaikan tutorial ini dengan menyedot debu dan menganalisis database Anda.
Untuk menyedot debu dan menganalisis database, jalankan perintah berikut.
vacuum; analyze;
Langkah 7: Bersihkan sumber daya Anda
Cluster Anda terus bertambah biaya selama itu berjalan. Ketika Anda telah menyelesaikan tutorial ini, Anda harus mengembalikan lingkungan Anda ke keadaan sebelumnya dengan mengikuti langkah-langkah di Langkah 5: Cabut akses dan hapus cluster sampel Anda di Panduan Memulai Amazon Redshift.
Jika Anda ingin menyimpan cluster, tetapi memulihkan penyimpanan yang digunakan oleh SSB tabel, jalankan perintah berikut.
drop table part; drop table supplier; drop table customer; drop table dwdate; drop table lineorder;
Selanjutnya
Ringkasan
Dalam tutorial ini, Anda mengunggah file data ke Amazon S3 dan kemudian COPY menggunakan perintah untuk memuat data dari file ke tabel Amazon Redshift.
Anda memuat data menggunakan format berikut:
-
Karakter dibatasi
-
CSV
-
Lebar tetap
Anda menggunakan tabel ERRORS sistem STL LOAD _ _ untuk memecahkan masalah kesalahan pemuatan, dan kemudian menggunakan opsiREGION,,MANIFEST,MAXERROR,ACCEPTINVCHARS,DATEFORMAT, dan NULL AS untuk mengatasi kesalahan.
Anda menerapkan praktik terbaik berikut untuk memuat data:
Untuk informasi selengkapnya tentang praktik terbaik Amazon Redshift, lihat tautan berikut: