Selama impor data yang disimpan di salah satu file ini, Anda dapat secara opsional menerapkan operasi ke data sebagai berikut
Gunakan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);6 untuk melakukan pemfilteran pada data yang masuk. Hanya baris yang memenuhi ekspresi dalam klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);6 yang akan dimuat ke SingleStoreDB Cloud . Untuk contoh cara menggunakan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);6, lihat.
Gunakan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);_9 untuk menyetel kolom menggunakan nilai atau ekspresi tertentu dengan variabel. Misalnya, jika file input Anda memiliki 9 kolom tetapi tabel memiliki kolom ke-10 yang disebut FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''00, Anda dapat menambahkan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''01 atau FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''02. Perhatikan bahwa nama kolom hanya boleh digunakan di sisi kiri ekspresi LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);9
Gunakan klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''04 untuk mengimpor file dengan kumpulan karakter apa pun yang didukung ke SingleStoreDB .
Untuk informasi lebih lanjut, lihat
Lihat Matriks Izin untuk izin yang diperlukan
Penting
Jika kueri menggunakan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''05 dalam pernyataan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7, SingleStoreDB Cloud menafsirkannya sebagai referensi untuk penetapan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 ke variabel, bukan sebagai .
Perilaku SingleStoreDB Cloud pada perintah LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 memiliki beberapa perbedaan fungsional dari perintah MySQL.
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 akan memuat data ke SingleStoreDB Cloud secara paralel untuk memaksimalkan performa. Hal ini membuat LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 di SingleStoreDB Cloud jauh lebih cepat pada mesin dengan jumlah prosesor yang lebih banyak.
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 mendukung pemuatan terkompresi. file gz
Satu-satunya charset_name yang didukung adalah utf8
Utilitas FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_12 juga dapat digunakan untuk mengimpor data ke SingleStoreDB Cloud . FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_12 menggunakan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 secara internal.
SingleStoreDB Cloud menyimpan informasi tentang kesalahan yang ditemui selama setiap operasi LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7, tetapi jumlah kesalahan dibatasi hingga 1000 secara default. Ketika batas ini tercapai, beban gagal. Ini mencegah masalah kehabisan memori saat secara tidak sengaja memuat file besar dengan format yang salah atau pernyataan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 yang salah. Gunakan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_17 di akhir pernyataan untuk mengubah batas ini. Untuk menentukan tanpa batas, atur FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''17 hingga FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''19.
Menulis ke beberapa database dalam transaksi tidak didukung
DATA BEBAN CSV
Sintaksis
LOAD DATA [LOCAL] INFILE '<file_name>' [REPLACE | IGNORE | SKIP { ALL | CONSTRAINT | DUPLICATE KEY | PARSER } ERRORS] INTO TABLE <table_name> [CHARACTER SET <character_set_name>] [{FIELDS | COLUMNS} [TERMINATED BY '<string>'] [[OPTIONALLY] ENCLOSED BY '<char>'] [ESCAPED BY '<char>'] ] [LINES [STARTING BY '<string>'] [TERMINATED BY '<string>'] ] [TRAILING NULLCOLS] [NULL DEFINED BY <string> [OPTIONALLY ENCLOSED]] [IGNORE <number> LINES] [ ({<column_name> | @<variable_name>}, ...) ] [SET <column_name> = <expression>,...] [WHERE <expression>,...] [MAX_ERRORS <number>] [ERRORS HANDLE <string>]Catatan
Pencatatan kesalahan dan penanganan kesalahan dibahas di akhir topik ini
Untuk menentukan jenis kompresi file input, gunakan klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''20. Lihat Menangani Kompresi Data untuk informasi selengkapnya
Jika file CSV tampaknya memiliki jumlah bidang yang salah di baris mana pun, Anda dapat menggunakan opsi LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);1 untuk melewati baris tersebut. LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 melaporkan peringatan untuk setiap baris yang dilewati
Penting
Baris dalam file CSV mungkin tampak memiliki jumlah bidang yang salah jika klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''23, FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''24, atau FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''25 salah dikonfigurasi. Jika LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 salah menemukan awal baris berikutnya dalam CSV setelah kesalahan parser, ini mungkin salah mengurai semua baris berikutnya. Karena alasan ini, selidiki input CSV dan setelan konfigurasi yang disebutkan di atas sebelum menggunakan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);1
Opsi LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);2 mencakup opsi LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);1, LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);5, dan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4, i. e. , menentukan opsi LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);_2 dalam kueri LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 menerapkan perilaku dari tiga opsi lainnya
Klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''34 memungkinkan Anda untuk menentukan pembatas bidang, kolom, dan garis sehingga data input ditafsirkan dan dibaca dengan benar. Misalnya, gunakan klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''35 untuk memuat file CSV yang bidangnya dipisahkan dengan koma. Selain itu, gunakan klausaFIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_36 jika baris dalam file CSV diakhiri oleh carriage return/newline pairs
Klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''37 atau setara FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''38 memungkinkan Anda menentukan string yang menyertakan nilai bidang. Misalnya, gunakan klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_39 untuk memuat file CSV yang bidangnya diapit dengan tanda kutip ganda. Perhatikan bahwa LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 masih akan memuat nilai bidang meskipun tidak tertutup
Klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''25 memungkinkan Anda menentukan karakter pelarian. Misalnya, jika data input berisi karakter khusus, Anda mungkin perlu meng-escape karakter tersebut untuk menghindari salah tafsir. Selain itu, Anda mungkin perlu mendefinisikan ulang karakter escape default untuk memuat kumpulan data yang berisi karakter tersebut
Klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''42 memungkinkan Anda memuat hanya baris data yang menyertakan string (atau awalan) tertentu. Saat memuat data, klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''42 melompati awalan yang ditentukan dan apa pun sebelumnya. Itu juga melewatkan baris yang tidak mengandung awalan yang ditentukan
Jika tidak ada klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''44 atau FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''45 yang ditentukan, maka SingleStoreDB menggunakan default berikut.
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_
Klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''46 memungkinkan file input berisi baris yang memiliki lebih sedikit dari jumlah kolom dalam tabel. Kolom yang hilang ini harus berupa kolom di belakang baris; . Lihat
Klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''49 menyisipkan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''47 nilai bidang dalam tabel untuk bidang dalam file masukan yang memiliki nilai FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''51. Opsi FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''52 memastikan bahwa bidang yang dikutip juga diperlakukan sebagai FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''47, bukan string kosong
Klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''54 mengabaikan baris yang ditentukan dari awal file input. Misalnya, gunakan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''55 untuk melewati baris header yang berisi nama kolom
Contoh
Memuat Data saat Urutan Kolom di Tabel Tujuan dan File Sumber Berbeda
Jika urutan kolom dalam tabel berbeda dengan urutan dalam file sumber, Anda dapat menamainya secara eksplisit. Dalam contoh ini, kolom dimuat dalam urutan terbalik
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first);Melewatkan Kolom di File Sumber
Anda dapat melewatkan kolom di file sumber menggunakan “ @ ” sign. In this example only the first and fourth columns are imported into table foo:
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz);Menentukan Pembatas Kolom
Pembatas kolom default adalah tab ( “ t ”) character, ASCII code 09. You can specify a different delimiter, even multi-character delimiters, with the FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''56 clause:
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ',';Dalam contoh berikut, pembatas bidang dan garis digunakan untuk membaca file yang berisi bidang yang dipisahkan oleh koma dan garis yang diakhiri oleh pasangan carriage return/newline
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';File Sumber dengan Pemisah Kolom yang Tidak Biasa
Contoh berikut menunjukkan pemuatan file yang memiliki pemisah kolom yang tidak biasa (FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''57)
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||';Memuat Data dari Banyak File
Menggunakan globbing, Anda dapat memuat data dari banyak file dalam satu kueri LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7
Kueri berikut memuat data dari semua FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_59 file dengan nama yang dimulai dengan angka
LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);Kueri berikut memuat data dari semua FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_59 file dengan nama file yang memiliki empat karakter
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);Kueri berikut memuat data dari semua FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_59 file dengan nama file tidak dimulai dengan angka
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);Catatan
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_62 tidak mendukung globbing
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_63 mendukung globbing dalam nama file, tetapi tidak dalam nama direktori
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_64 berisi LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 klausa. Di sini, LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 mendukung globbing, baik dalam nama direktori maupun nama file
Menggunakan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_46 Klausul
Contoh berikut menunjukkan cara menggunakan klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''46 menggunakan file FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''69 , dengan konten berikut
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_0Jalankan perintah berikut
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_1Menggunakan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_49 Klausul
Contoh berikut menunjukkan cara menggunakan klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''49 menggunakan file FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''72
________4LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);_4_______3Kueri berikut menyisipkan bidang kosong yang tidak tertutup sebagai nilai FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''47 dan bidang kosong yang tertutup sebagai string kosong
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_4Jika Anda menambahkan opsi FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''52 ke klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''49 dalam kueri di atas, dan sebagai gantinya menjalankan kueri berikut, kedua bidang kosong akan disisipkan sebagai nilai FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''47
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_5Menggunakan Klausul FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_77
Dalam contoh berikut, klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''77 digunakan untuk melewati baris header yang berisi nama kolom di file sumber
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_6Menggunakan Klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_25
Contoh berikut menunjukkan cara memuat data ke dalam tabel FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''80 menggunakan klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''25 dari file FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''82, yang isinya ditunjukkan di bawah ini
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''7FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''8Jalankan kueri berikut
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_9Dalam kueri ini, karakter FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''83 keluar dari koma (FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''84) di antara dua bidang pertama kontak. csv . (The FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_83 (backslash) adalah karakter escape default dalam kueri SQL. Oleh karena itu, FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_86 (garis miring terbalik ganda) digunakan untuk menghindari garis miring terbalik itu sendiri di dalam kueri. )
Peringatan
Jika Anda (secara tidak sengaja) keluar dari FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''34 karakter dalam file, kueri SQL dapat mengembalikan kesalahan. Misalnya, jika Anda menghapus kedua koma di salah satu baris kontak. csv file yang disebutkan di atas, sebagai.
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _0dan kemudian jalankan kueri berikut
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _1mengembalikan kesalahan berikut. ERROR 1261 (01000). Baris 1 tidak berisi data untuk semua kolom . Karena, FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_83 (garis miring terbalik) lolos dari koma dan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 menganggap baris pertama sebagai satu kolom.
Menggunakan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_42 Klausul
Contoh berikut menunjukkan cara melewatkan awalan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''91 di file data FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''92 menggunakan klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''42
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 2LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 3Dalam contoh ini, klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''42 melompati awalan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_91 di baris pertama dan ketiga dan apa pun sebelumnya. Melompati baris kedua, karena tidak mengandung FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''91
Memfilter Baris dari File Sumber
Anda juga dapat memfilter baris yang tidak diinginkan menggunakan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);6. Dalam contoh ini, hanya baris dengan bar sama dengan 5 yang akan dimuat. Semua baris lainnya akan dibuang
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _4Memfilter dan Mengubah Baris Dari File Sumber
Transformasi kompleks dapat dilakukan di “ SET ” and “WHERE” clauses. For example, if you have an input file with a FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''98 field and an FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''99 field:
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _5Anda hanya ingin memuat baris dengan tanggal dalam waktu tiga bulan dari tanggal tertentu, 10/15/2016, misalnya. Ini dapat dicapai dengan yang berikut ini
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _6Sementara nama kolom dan variabel dapat dirujuk dalam klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);6 nama kolom hanya dapat ditetapkan dalam klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);9. Cakupan klausul ini dibatasi pada baris saat ini dan oleh karena itu LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 02 pernyataan tidak dapat dievaluasi
Menggunakan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);_3
Contoh ini menggunakan tabel LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _04, yang didefinisikan sebagai tabel columnstore sebagai berikut
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _7Asumsikan direktori LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _05 memiliki satu file LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 06, yang berisi data berikut
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _8Buat pernyataan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 dengan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _9Saat LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 menyerap data dari LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 06 ke dalam tabel LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 04, ia menemukan catatan kelima dan keenam dalam file, yang berisi kunci duplikat LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 12 dan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 13. Rekaman kedua dan ketiga yang berisi kunci duplikat tersebut (yang telah diimpor ke LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 04), diganti dengan rekaman kelima dan kedua
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 0Memuat File Panjang Tetap
Contoh ini menunjukkan cara memuat konten file LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 15, yang isinya ditunjukkan di bawah ini
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 1LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 menyisipkan setiap baris yang diekstraksi dari LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 15 ke dalam tabel FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''00. Tentukan tabel sebagai berikut
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 2Jalankan pernyataan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 3LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _20 mengekstrak substring dari string dan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 21 menghapus padding (spasi dalam kasus ini) dari awal dan akhir string. Misalnya, setelah pernyataan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 mengekstrak baris LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 23 di LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 15, ia melakukan hal berikut untuk menyetel LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 25. * Ini mengekstrak, dari LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _23, substring mulai dari posisi 4 memiliki panjang 2. Substring yang dihasilkan adalah LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 27. * Ini menghilangkan spasi putih terkemuka dari LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 27 untuk menghasilkan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 27
Ambil data dari FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_00
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 4Memuat Data menggunakan Hex Field Terminator Syntax
Memuat data ke dalam tabel melalui pipa dapat dilakukan menggunakan terminator bidang heksadesimal. Contoh di bawah ini menggunakan bucket AWS S3 untuk sumber datanya
Sintaksis
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 5DATA BEBAN JSON
Sintaksis
Semantik
Pencatatan kesalahan dan penanganan kesalahan dibahas di akhir topik ini
Ekstrak subnilai yang ditentukan dari setiap nilai JSON di LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 31. Tetapkan mereka ke kolom tertentu dari baris baru di LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 32, atau ke variabel yang digunakan untuk penugasan kolom di klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);9. Jika subnilai yang ditentukan tidak dapat ditemukan di input JSON, tetapkan literal klausa ________61______34 sebagai gantinya. Buang baris yang tidak cocok dengan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);6
Untuk menentukan jenis kompresi file input, gunakan klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''20. Lihat Menangani Kompresi Data untuk informasi selengkapnya
File yang dinamai oleh LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 31 harus terdiri dari gabungan nilai JSON yang disandikan UTF-8, secara opsional dipisahkan oleh spasi putih. JSON yang dibatasi baris baru diterima, misalnya
Nilai JSON non-standar seperti LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 38, LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 39, dan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 40 tidak boleh muncul di LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 31
Jika LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _31 diakhiri dengan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 43 atau LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 44, itu akan didekompresi
JSON LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 mendukung subset opsi pemulihan kesalahan yang diizinkan oleh CSV LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7. Perilaku mereka seperti yang dijelaskan dalam CSV LOAD DATA
Seperti CSV LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7, JSON LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 memungkinkan Anda menggunakan globbing untuk memuat data dari banyak file. Lihat CSVnya
Menulis ke beberapa database dalam transaksi tidak didukung
Mengekstraksi Nilai JSON
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _49 menentukan subnilai mana yang diekstraksi dan kolom atau variabel yang masing-masing ditugaskan
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 menggunakan daftar kunci yang dipisahkan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 51 dalam LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 52 untuk melakukan pencarian kunci berurutan dalam objek JSON bersarang, seolah menerapkan operator SQL LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 51. Berbeda dengan operator LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 51, LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 52 tidak boleh digunakan untuk mengekstrak elemen array JSON. Jalur LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _56 mengacu pada seluruh nilai JSON yang sedang diproses. Leading LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 57 dapat dihilangkan dari jalur yang tidak kosong
Jika jalur tidak dapat ditemukan dalam nilai input JSON, maka jika elemen yang memuat LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 49 memiliki klausa LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 34, LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 60 akan ditetapkan;
Komponen jalur yang mengandung spasi putih atau tanda baca harus diapit oleh backtick. Misalnya, jalur LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _62 dan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 63 keduanya akan mengekstrak LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 64 dari objek input LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 65
Elemen array dapat diekstraksi secara tidak langsung dengan menerapkan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 66 dalam klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);9
Mengonversi Nilai JSON
Sebelum penugasan atau menetapkan evaluasi klausa, nilai JSON yang diekstraksi menurut LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 52 diubah menjadi string SQL collation biner yang nilainya bergantung pada jenis JSON yang diekstraksi sebagai berikut
Jenis JSON
Nilai yang Dikonversi
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _69
SQLFIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_47
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 71/________61______72
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 73/________61______74
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _75
Kata demi kata, dari string yang diekstraksi
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _76
Semua urutan escape string JSON, termasuk dikonversi ke UTF-8. Kata demi kata sebaliknya
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _77
Kata demi kata, dari string yang diekstrak. Misalnya, LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _78
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _79
Kata demi kata, dari string yang diekstrak. Misalnya, LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _80
Konversi tidak bersifat rekursif. Jadi, misalnya, LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _71 tidak dikonversi menjadi LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 73 ketika itu adalah subnilai dari objek yang sedang diekstraksi secara keseluruhan
Contoh JSON LOAD DATA
Contoh 1
Jika LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _83 terdiri dari
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 7Kemudian dapat dimuat sebagai berikut
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 8Contoh 2
Jika LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _84 terdiri dari
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); _9Kemudian kita dapat melakukan ________10______7 yang lebih rumit
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 0Ada beberapa hal yang perlu diperhatikan dalam contoh di atas
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 71 dikonversi menjadi LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 73 untuk kolom LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 25, tetapi tidak untuk kolom LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 89. LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _73 selanjutnya dikonversi menjadi LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 91 nilai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 64
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _93 dan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 94 dikonversi menjadi UTF-8 untuk kolom LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 95, tetapi tidak untuk kolom LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 89. Perhatikan bahwa LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _89 akan menjadi JSON yang tidak valid jika kami telah menerjemahkan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 94
Baris kedua dibuang karena tidak cocok dengan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);6
Tak satu pun dari jalur di LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _49 dapat ditemukan di baris ketiga, jadi LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 34 literal seperti LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 02 ditugaskan sebagai gantinya
Kami menetapkan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); _03 ke variabel perantara sehingga kami dapat mengekstraksi elemen array di klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);9
Nilai JSON “ tingkat atas ” di . ________62______06 adalah nilai JSON objects. LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 06 is a valid “ tingkat atas ” yang valid.
Avro BEBAN DATA
Sintaksis
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _1Lihat repo GitHub terkait
Semantik
Pencatatan kesalahan dan penanganan kesalahan dibahas di akhir topik ini
Ekstrak subnilai yang ditentukan dari setiap nilai Avro di LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 31. Tetapkan mereka ke kolom tertentu dari baris baru di LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 32, atau ke variabel yang digunakan untuk penugasan kolom di klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);9. Buang baris yang tidak cocok dengan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);6
Untuk menentukan jenis kompresi file input, gunakan klausa FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''20. Lihat Menangani Kompresi Data untuk informasi selengkapnya
Avro LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 mengharapkan data Avro dalam salah satu dari dua “ sub-format ”, depending on the LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 13 clause.
Jika tidak ada klausa LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 13 yang diberikan, LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 31 harus memberi nama Avro Object Container File seperti yang dijelaskan di versi 1. 8. 2 dari spesifikasi Avro. Selain itu, pembatasan berikut berlaku.
Codec kompresi file harus ________61______69
Nilai array dan map tidak boleh lebih dari 16384 elemen
Nama jenis LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 17 tidak boleh digunakan dalam simbol “ referensi ke nama yang ditentukan sebelumnya” in any of its fields. It may still be used in a symbolic reference outside the record definition, however.
Misalnya, skema referensi mandiri seperti berikut ini ditolak oleh LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _2
Jika klausa ________62______13 disediakan, file harus berupa “ aliran mentah ” consisting of only the concatenated binary encodings of instances of LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 20. LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 20 must be a SQL string containing a JSON Avro schema. The restrictions on Object Container Files juga berlaku untuk “ aliran mentah” files.
Peringatan
Merupakan kesalahan untuk memberikan klausa LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 13 saat memuat Object Container File karena berisi metadata bersama dengan nilai yang disandikan.
Semua atribut skema Avro opsional kecuali atribut LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 23 diabaikan. Khususnya, LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); _24 atribut diabaikan
Jika LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _31 diakhiri dengan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 43 atau LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 44, itu akan didekompresi
Avro LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 mendukung subset opsi pemulihan kesalahan yang diizinkan oleh CSV LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7. Perilaku mereka seperti yang dijelaskan dalam CSV LOAD DATA
Menulis ke beberapa database dalam transaksi tidak didukung
Opsi LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); _30 memungkinkan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 untuk menarik skema dari registri skema. Untuk informasi lebih lanjut, lihat topik Avro Schema Evolution With Pipelines
Mengekstraksi Nilai Avro
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _49 menentukan subnilai mana yang diekstraksi dan kolom atau variabel yang masing-masing ditugaskan
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 menggunakan daftar nama yang dipisahkan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 51 dalam LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 52 untuk melakukan pencarian nama bidang berturut-turut atau nama jenis cabang serikat di catatan Avro bertumpuk atau serikat. LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _52 tidak boleh digunakan untuk mengekstrak elemen array atau peta Avro. Jalur LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _56 mengacu pada seluruh nilai Avro yang sedang diproses. Leading LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 57 dapat dihilangkan dari jalur yang tidak kosong
Jika jalur tidak dapat ditemukan dalam nilai input Avro, maka. * Jika awalan jalur cocok dengan catatan yang skemanya tidak memiliki bidang yang cocok dengan nama berikutnya di jalur, maka LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 akan diakhiri dengan kesalahan. * Jika awalan cocok dengan gabungan yang skemanya tidak memiliki cabang yang cocok dengan nama berikutnya, maka LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 akan diakhiri dengan kesalahan. * Jika awalan cocok dengan gabungan yang skemanya memiliki cabang yang cocok dengan nama berikutnya, tetapi cabang tersebut bukan cabang yang dipilih dalam contoh skema gabungan tersebut, maka Avro LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 69 akan diekstraksi sebagai gantinya dan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 akan melanjutkan
Penamaan komponen jalur cabang gabungan harus menggunakan dua bagian dari tipe cabang jika tipe tersebut ada di namespace
Komponen jalur yang mengandung spasi putih atau tanda baca harus diapit oleh backtick
Elemen array dan peta dapat diekstraksi secara tidak langsung dengan menerapkan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 66 dalam klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);9
Misalnya, pertimbangkan dua catatan Avro dengan skema gabungan
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _3Jalur LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 45 dan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 46 keduanya akan mengekstrak LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 64 dari instance skema ini yang pengkodean JSON-nya adalah LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 48
Mereka akan mengekstrak LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _69 dari instance yang penyandiannya adalah LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 50
Jalur LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 51 dan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 52 akan mengekstrak LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 53 dari instance kedua dan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 69 dari instance pertama
Konversi Nilai Avro
Sebelum penugasan atau menetapkan evaluasi klausa, nilai Avro yang diekstraksi menurut LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 52 diubah menjadi tipe SQL yang tidak ditentukan yang dapat dikonversi lebih lanjut secara eksplisit atau implisit seolah-olah dari string SQL yang nilainya adalah sebagai berikut
Tipe Avro
Nilai yang Dikonversi
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _69
SQLFIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_47
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 58
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 73/________61______74
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 52
Representasi string dari nilai
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 62
Representasi string dari nilai
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 63
SQL FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_47 jika tidak terbatas. Jika tidak, string dapat dikonversi tanpa kehilangan presisi ke LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 65
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 66
SQL FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_47 jika tidak terbatas. Jika tidak, string dapat dikonversi tanpa kehilangan presisi ke LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 68
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 69
Representasi string dari enum
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 70
Verbatim, dari input byte
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _76
Verbatim, dari input byte
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 72
Verbatim, dari input byte
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 17
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 74
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _77
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 76
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 24 atribut diabaikan dan tidak berpengaruh pada konversi
Contoh LOAD DATA Avro
Contoh 1
Pertimbangkan Avro Object Container File LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 78 dengan skema berikut.
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _4LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 78 berisi tiga nilai Avro yang pengkodean JSON-nya
LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 78 dapat dimuat sebagai berikut
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _6LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 dapat mengurai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 78 karena Avro Object Container Files memiliki header yang berisi skemanya.
Contoh 2
Pertimbangkan file bernama LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 83, dengan nilai yang sama dengan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 78 dari Contoh 1 tetapi dalam “ format aliran mentah”. That is, LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 83 consists of the binary encoded values and nothing else. We add a LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 13 clause to tell LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 to expect a “ aliran mentah ” with the provided schema:
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _7Contoh 3
Pertimbangkan Object Container File LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 88 dengan payload yang lebih rumit daripada Contoh 1. Kami mengilustrasikan penggalian nilai dari serikat dan catatan bersarang, dan juga secara tidak langsung mengekstraksi elemen peta dan larik bersarang.
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _8Pengkodean JSON mentah dari isi file ini dapat dilihat pada kolom LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 89 setelah LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 berikut
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _9Ada beberapa hal yang perlu diperhatikan
Kami mencoba mengekstraksi subnilai dari cabang LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 91 dari bidang tipe gabungan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 92. Karena itu bukan anggota serikat yang dipilih dalam catatan 1, LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 menugaskan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''47 ke LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 95 dan LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 96
Kami menetapkan pengkodean JSON dari LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 97 ke LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 96 dan kemudian melakukan pencarian peta JSON dan array dalam klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);9 untuk akhirnya mengekstrak LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 53
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _01 dan LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 02 memiliki konten yang sama, tetapi kita dapat melihat bagaimana perbedaan tipe Avro mereka memengaruhi pengkodean JSON mereka dan berinteraksi dengan tipe SQL JSON
Pengkodean JSON dari nilai Avro LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 76 LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 01, seperti yang terlihat di LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 89, mengkodekan karakter khusus seperti LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 06 sebagai escape sequence LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 07
Enkode JSON dari nilai Avro LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 70 LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 02, seperti yang terlihat di LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 89, mengkodekan setiap byte dengan escape JSON.
Saat mengonversi pengkodean JSON dari record 2 ke tipe SQL JSON saat menetapkan ke LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 11, LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 menormalkan kedua representasi urutan byte LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 13 ke LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 14
Memuat File Parket
Perintah LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 tidak mendukung memuat file Parket. Namun, Anda dapat menggunakan klausa LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 dalam CREATE PIPELINE. Pernyataan FORMAT PARQUET untuk membuat saluran pipa yang memuat file Parquet
Menangani Kompresi Data
Klausul FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''20 menentukan bagaimana LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 menangani kompresi file masukan
Sintaksis
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';0Argumen
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _19. Ini adalah pengaturan default, ini memberi tahu LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 untuk mengidentifikasi jenis kompresi dari ekstensi file input
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _21. Menentukan bahwa file input tidak terkompresi
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _22. Menentukan bahwa file masukan dikompresi dengan LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 22 algoritma kompresi
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _24. Menentukan bahwa file masukan dikompresi dengan LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 24 algoritma kompresi
Catatan
Jika FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_20 diatur ke LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 21, LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 22, atau LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 24, LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 tidak akan menggunakan ekstensi file input untuk menentukan jenis kompresi. Misalnya, jika Anda memuat file LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _31 dan menentukan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''20 sebagai LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 21, maka LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 akan menangani LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 31 sebagai file yang tidak terkompresi
LOKAL
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);8 memengaruhi lokasi file yang diharapkan, perilaku pencarian untuk nama jalur relatif, dan perilaku penanganan kesalahan
Saat Anda menentukan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_8, klien membaca LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 31 dan mengirimkannya ke server. Lokasi file yang diharapkan ada di dalam direktori klien. Jika LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _31 adalah jalur relatif, itu relatif terhadap direktori kerja klien saat ini
Ketika LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_8 tidak ditentukan, file dibaca oleh server, dan harus ditempatkan di host server terkait. Jika nama jalur file relatif ditentukan, itu dicari sebagai relatif terhadap direktori data server, atau relatif terhadap direktori database default dalam kasus di mana tidak ada komponen utama yang diberikan
Karena file harus dikirim dari klien ke server, menentukan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);8 bisa lebih lambat. Namun, itu memang memiliki keunggulan keamanan karena pengguna klien harus dapat membaca file yang sedang dimuat. Jika LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_8 tidak ditentukan, server memerlukan akses ke direktori data lengkap, artinya setiap pengguna yang memiliki izin untuk LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 atau FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''64 dapat membaca direktori. Ini karena izin tersebut mencakup LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 45 Matriks Izin
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_8 tidak mendukung globbing (seperti menggunakan wildcard di direktori atau nama file)
Contoh penggunaan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_8 berikut
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';1Pencatatan Kesalahan
Saat Anda menjalankan perintah LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 dan menggunakan klausa LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 49, LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 mencatat kesalahan ke tabel LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 51. Kesalahan yang dicatat adalah baris yang salah yang LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 temui saat memproses file input. Tabel berikut menjelaskan LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _51
Nama kolom
Keterangan
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _54
Nama database yang terkait dengan kesalahan
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _55
Nilai string yang ditentukan dalam pernyataan LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _56 yang menyebabkan kesalahan
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _57
Waktu kejadian kesalahan dalam format stempel waktu Unix
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _58
Menentukan jenis kesalahan apa yang terjadi. LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _59 digunakan ketika LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 mengembalikan kesalahan ke aplikasi klien. LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _61 digunakan ketika LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 tidak mengembalikan kesalahan ke aplikasi klien dan malah melewatkan atau mengabaikan kesalahan. Catatan. Jika LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _63 mengembalikan kesalahan kunci duplikat ke aplikasi klien, kesalahan tidak dicatat ke LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 51
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _65
Kode kesalahan untuk kesalahan
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _66
Pesan yang terkait dengan kesalahan. Nilai ini berisi informasi kontekstual tentang kesalahan yang dapat digunakan untuk tujuan debug
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _67
Baris yang salah dalam file masukan yang LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 tidak dapat diproses. Galat pemuatan biasanya disebabkan oleh data yang salah format atau mencoba menulis jenis skema yang tidak valid ke dalam kolom, seperti nilai FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''47 ke dalam kolom yang tidak dapat dibatalkan
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _70
Nomor baris file input menyebabkan kesalahan penguraian saat mencoba memuat data ke tabel tujuan. Nomor baris ini dapat dikorelasikan dengan nilai LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 67, yang berisi teks baris yang tidak valid
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _72
Nama host atau alamat IP host dari node yang memproses baris yang salah dari file input
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _73
Nomor port node yang memproses baris yang salah dari file input
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _74
Menentukan ID partisi pada node daun yang memproses baris yang salah dari file input. Nilai ini adalah FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_47 jika agregator memproses baris tersebut
Lihat bagian berikutnya untuk contoh data yang LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _63 diisi dalam tabel LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 51
Gunakan perintah HAPUS BEBAN KESALAHAN untuk menghapus kesalahan dari LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 51.
Penanganan Kesalahan
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 memiliki beberapa opsi untuk menangani kesalahan yang ditemui saat memproses file input. Saat Anda menulis pernyataan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7, Anda dapat memutuskan opsi mana yang akan digunakan
Secara default, LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 mengembalikan kesalahan ke aplikasi klien. Kesalahan dikembalikan satu per satu
Untuk mengabaikan kesalahan kunci duplikat/nilai indeks dalam file input, gunakan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3 untuk mengganti baris yang ada dengan baris input. Klausa ini pertama-tama menghapus baris yang ada yang memiliki nilai yang sama untuk kunci utama atau indeks unik sebagai baris masukan, lalu menyisipkan baris baru
Untuk melewati kesalahan dalam file input, gunakan klausa ________64______83. Data di baris yang salah tidak akan dimasukkan ke tabel tujuan
Untuk mengabaikan kesalahan dalam file input, gunakan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0. Klausul ini menggantikan nilai yang tidak valid dengan defaultnya, membuang bidang ekstra, atau membuang baris yang salah sepenuhnya
Ketika LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_8 ditentukan, kunci duplikat dan kesalahan interpretasi data tidak menghentikan operasi. Ketika LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_8 tidak ditentukan, kunci duplikat dan interpretasi data menghentikan operasi
Peringatan
Dalam kebanyakan kasus, gunakan LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _83 alih-alih LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0. Jika Anda menggunakan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);_0 tanpa memahami bagaimana perilakunya, LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 dapat menghasilkan hasil yang tidak terduga saat memasukkan data ke tabel tujuan
Keempat opsi penanganan kesalahan dibahas dalam topik berikut
Penanganan Kesalahan Default
Secara default, LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 mengembalikan kesalahan ke aplikasi klien. Kesalahan dikembalikan satu per satu. Jika mengembalikan kesalahan, tidak ada data yang akan dimasukkan ke tabel tujuan
Contoh Penanganan Kesalahan
Buat tabel baru dengan kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _92
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';2File CSV berikut akan dimuat ke dalam tabel ini sebagai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 06. Perhatikan bahwa baris 2 memiliki kolom ekstra dan ada duplikat nilai kunci utama LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 53 di baris 4
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';3Memuat data ke dalam tabel
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';4Setelah menghapus kolom ekstra dari baris 2
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';5Setelah menghapus entri kunci primer duplikat, pernyataan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 berhasil dan file input dimuat ke dalam tabel
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3 Penanganan Kesalahan
SingleStoreDB memungkinkan Anda mengganti baris yang ada dengan baris baru; . Jika terjadi kesalahan yang muncul karena nilai kunci duplikat, terlebih dahulu menghapus baris yang bertentangan di tujuan yang memiliki nilai kunci duplikat dan kemudian menyisipkan baris baru dari file sumber.
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7 menyisipkan baris file sumber ke tabel tujuan sesuai urutan munculnya baris di file sumber. Ketika LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3 ditentukan, file sumber yang berisi nilai duplikat unik atau kunci primer akan ditangani dengan cara berikut
Jika skema tabel tujuan menentukan kolom kunci unik atau primer, dan
File sumber berisi baris dengan nilai kunci utama atau unik yang sama dengan tabel tujuan
Baris di tabel tujuan yang memiliki nilai kunci unik atau primer yang sama dengan baris di file sumber akan dihapus dan baris baru dari file sumber yang cocok dengan nilai kunci utama akan disisipkan ke tabel tujuan
Catatan . Jika file sumber berisi beberapa baris dengan nilai kunci utama atau unik yang sama dengan tabel tujuan, maka hanya baris terakhir di file sumber dengan nilai kunci utama atau unik yang sama (sebagai tabel tujuan) yang menggantikan baris yang ada di tujuan .
Catatan . LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3 tidak dapat digabungkan dengan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);5. Perilaku default SingleStoreDB Cloud adalah melempar kesalahan untuk kunci duplikat. Namun, baik LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3 dan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);5 tidak menimbulkan kesalahan kunci duplikat; .
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3 Contoh Penanganan Kesalahan
Buat tabel baru dengan kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _92
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';6Baris dengan kunci utama LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';_08 dimasukkan sebagai berikut
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';7File CSV berikut dimuat ke dalam tabel sebagai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 06. Catat nilai kunci primer duplikat dari LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';08 di baris 2
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';8Memuat data ke dalam tabel
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';_9Baris 2 di file sumber berisi duplikat kunci utama LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';08. Penangan kesalahan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3 menghapus baris LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';13 di tabel tujuan dan menggantinya dengan nilai LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';14 dari file sumber
LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _83 Penanganan Kesalahan
SingleStoreDB Cloud memungkinkan Anda menentukan skenario kesalahan yang, saat ditemui, membuang baris yang mengganggu. Tiga jenis skenario kesalahan dapat dilewati.
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);5. Setiap baris dalam data sumber yang berisi duplikat kunci unik atau primer akan dibuang. Jika baris berisi data yang tidak valid selain kunci duplikat, kesalahan akan dihasilkan. Lihat SKIP DUPLICATE KEY ERROR di bawah ini
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);_4. Termasuk LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);5. Jika sebuah baris melanggar batasan kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';20, atau baris berisi nilai JSON atau Geospasial yang tidak valid, baris tersebut akan dibuang. Jika baris berisi data yang tidak valid di luar cakupan batasan atau kesalahan nilai yang tidak valid, kesalahan akan dihasilkan. Lihat SKIP CONSTRAINT ERRORS di bawah ini
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);_2. Termasuk LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);5 dan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4. Juga sertakan kesalahan penguraian di baris yang disebabkan oleh masalah seperti jumlah bidang yang tidak valid. Lihat LEWATKAN SEMUA KESALAHAN di bawah ini
LEWATI KESALAHAN KUNCI GANDA
Ketika LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);5 ditentukan, file sumber yang berisi nilai duplikat unik atau kunci primer akan ditangani dengan cara berikut
Jika skema tabel tujuan menentukan kolom kunci unik atau primer, dan
File sumber berisi satu atau lebih baris dengan nilai kunci duplikat yang sudah ada di tabel tujuan atau ada di tempat lain di file sumber, lalu
Setiap baris duplikat di file sumber akan dibuang dan tidak akan dimasukkan ke dalam tabel tujuan
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);5 tidak dapat digabungkan dengan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3
SKIP DUPLICATE KEY ERRORS Contoh
Buat tabel baru dengan kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _92
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';2File CSV berikut akan dimuat ke dalam tabel ini sebagai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 06. Catat nilai kunci utama duplikat dari LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 53 di baris 3
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 1Memuat data ke dalam tabel
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 2Perhatikan bahwa hanya 3 baris yang dimasukkan meskipun 4 baris ada di file sumber. Baris 3 di file sumber berisi kunci primer duplikat, dan Anda dapat memverifikasi bahwa itu tidak dimasukkan dengan menanyakan tabel LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';30
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 3SKIP CONSTRAINT ERROR
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4 termasuk LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);5 jika LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3 tidak ditentukan. Ini juga berlaku untuk baris yang melanggar batasan kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';20 dan kolom yang berisi nilai JSON atau Geospasial yang tidak valid, dan menangani baris yang melanggar dengan cara berikut
Batasan BUKAN NULL
Jika kolom di tabel tujuan menentukan batasan LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';20, dan
File sumber berisi satu atau lebih baris dengan nilai nol untuk kolom kendala, lalu
Baris yang menyinggung akan dibuang dan tidak akan dimasukkan ke tabel tujuan
Data JSON atau Geospasial tidak valid
Jika kolom di tabel tujuan menentukan tipe data LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';36, ________65______37, atau LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';38, dan
File sumber berisi satu atau beberapa baris dengan nilai yang tidak valid untuk bidang jenis ini
Baris yang menyinggung akan dibuang dan tidak akan dimasukkan ke tabel tujuan
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4 juga dapat digabungkan dengan klausa LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3
SKIP CONSTRAINT ERROR Contoh
Buat tabel baru dengan tipe kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';36 yang juga memiliki batasan LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';20
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 4File CSV berikut akan dimuat ke dalam tabel ini sebagai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 06. Perhatikan format JSON yang salah di baris 2, serta nilai null (LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';44) untuk JSON di baris 4
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 5Memuat data ke dalam tabel
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 6Perhatikan bahwa hanya 2 baris yang dimasukkan meskipun 4 baris ada di file sumber. Baris 2 berisi JSON yang salah format, dan Baris 4 berisi nilai null yang tidak valid. Anda dapat memverifikasi bahwa kedua baris yang melanggar ini tidak disisipkan dengan menanyakan tabel LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';30
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 7LEWATKAN SEMUA KESALAHAN
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);2 termasuk LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);5 dan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4 selain kesalahan penguraian. Baris yang menyinggung ditangani dengan cara berikut
Jika satu atau lebih baris dalam file sumber menyebabkan kesalahan LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';49 atau LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';50, atau
Jika satu atau lebih baris dalam file sumber menyebabkan kesalahan penguraian seperti pembatas yang tidak valid atau jumlah bidang yang tidak valid,
Baris yang menyinggung akan dibuang dan tidak akan dimasukkan ke tabel tujuan
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);2 juga dapat digabungkan dengan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);3
LEWATKAN SEMUA KESALAHAN Contoh
Buat tabel baru dengan tipe kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';36 yang juga memiliki batasan LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';20
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 4File CSV berikut akan dimuat ke dalam tabel ini sebagai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 06. Ada tiga hal yang salah dengan file ini
Baris 2 hanya berisi 3 bidang
Baris 3 memiliki kunci primer duplikat
Baris 4 memiliki nilai nol untuk batasan ________65______20
Memuat data ke dalam tabel
LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0Hanya 1 baris yang ditulis, meskipun file sumber berisi 4 baris. Baris 2 dihapus karena berisi sejumlah bidang yang tidak valid, Baris 3 dihapus karena berisi kunci primer duplikat, dan baris 4 dihapus karena berisi nilai null untuk batasan LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';20. Anda dapat memverifikasi bahwa baris yang menyinggung ini tidak disisipkan dengan menanyakan tabel ________65______30
LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);1LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0 Penanganan Kesalahan
SingleStoreDB Cloud Perilaku LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0 identik dengan perilaku LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0 MySQL, dan hanya ada untuk mendukung kompatibilitas mundur dengan aplikasi yang ditulis untuk MySQL. LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0 membuang baris yang salah bentuk, membuang bidang ekstra, atau mengganti nilai yang tidak valid dengan nilai tipe data default. Selain itu, jika baris yang disisipkan menghasilkan kesalahan jika LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0 tidak ditentukan, baris tersebut akan diubah menjadi peringatan.
Konsekuensi Menggunakan IGNORE Daripada SKIP ERRORS
Tidak seperti LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _83 yang membuang baris yang menyinggung, LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0 dapat mengubah data baris yang disisipkan untuk memastikan bahwa itu mematuhi skema tabel. Perilaku ini dapat berdampak serius pada integritas data tabel tujuan
Dalam skenario kasus terbaik di mana baris yang cacat menggunakan pembatas yang tepat dan berisi jumlah bidang yang benar, baris tersebut dapat diselamatkan sebagian. Setiap nilai yang tidak valid diperbarui dengan nilai default, dan baris yang dimodifikasi ditulis ke tabel tujuan. Hasilnya adalah setidaknya beberapa data sumber ditulis ke tabel tujuan
Namun, skenario terburuk bisa parah. Misalnya, jika nilai baris dipisahkan oleh pembatas yang tidak valid, setiap bidang diperbarui dengan nilai default yang tidak berarti dan baris yang dimodifikasi ditulis ke tabel tujuan. Demi integritas data tabel, akan lebih baik jika baris yang menyinggung itu dibuang. Tapi baris dengan data yang tidak berarti dimasukkan sebagai gantinya
Karena potensi konsekuensi penggunaan LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0, dalam banyak kasus LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 83 adalah pilihan yang lebih baik. Untuk memahami perilaku LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);_0 untuk setiap skenario kesalahan, lanjutkan membaca bagian di bawah ini
Gandakan nilai kunci unik atau primer
Nilai dengan jenis yang tidak valid menurut skema tabel tujuan
Baris yang berisi jumlah bidang yang tidak valid
Gandakan Nilai Kunci Unik atau Utama
Ketika LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0 ditentukan, file sumber yang berisi nilai duplikat unik atau kunci utama akan ditangani dengan cara berikut
Jika skema tabel tujuan menentukan kolom kunci unik atau primer, dan
File sumber berisi satu atau lebih baris dengan nilai kunci duplikat yang sudah ada di tabel tujuan atau ada di tempat lain di file sumber, lalu
Setiap baris duplikat di file sumber akan dibuang (diabaikan) dan tidak akan dimasukkan ke dalam tabel tujuan
Contoh Nilai Kunci Utama atau Unik Gandakan
Buat tabel baru dengan kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _92
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';6File CSV berikut akan dimuat ke dalam tabel ini sebagai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 06. Catat nilai kunci utama duplikat dari LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 53 di baris 3
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 1Memuat data ke dalam tabel
LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4Perhatikan bahwa hanya 3 baris yang dimasukkan meskipun 4 baris ada di file sumber. Baris 3 di file sumber berisi kunci primer duplikat. Anda dapat memverifikasi bahwa baris yang menyinggung ini tidak disisipkan dengan menanyakan tabel ________65______30
LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 3Baris 3 di file sumber berisi kunci primer duplikat dan dibuang karena baris 2 disisipkan terlebih dahulu
Nilai dengan Jenis yang Tidak Valid Menurut Skema Tabel Tujuan
Ketika LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0 ditentukan, file sumber yang berisi baris dengan tipe tidak valid yang melanggar skema tabel tujuan akan ditangani dengan cara berikut
Jika file sumber berisi satu atau lebih baris dengan nilai yang tidak sesuai dengan skema tabel tujuan,
Setiap nilai dari tipe yang tidak valid dalam satu baris akan diganti dengan nilai default dari tipe yang sesuai, dan
Baris yang dimodifikasi akan dimasukkan ke tabel tujuan
LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0 berperilaku dengan cara yang berpotensi tidak terduga untuk kolom yang memiliki nilai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 34 yang ditentukan. Ketika nilai yang tidak valid di baris yang disisipkan diganti dengan nilai default dari jenis kolom, nilai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 34 kolom diabaikan. Sebagai gantinya, nilai default untuk tipe data kolom digunakan
Contoh
Buat tabel baru dengan kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _92
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';6File CSV berikut akan dimuat ke dalam tabel ini sebagai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 06. Baris 4 berisi nilai FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''47 untuk LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';81, sedangkan skema tabel tidak mengizinkan FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''47 nilai untuk bidang ini
LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);7Memuat data ke dalam tabel
LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4Perhatikan bahwa 4 baris dimasukkan meskipun faktanya baris 4 di file sumber berisi nilai nol untuk kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';20. Anda dapat memverifikasi kesalahan dengan baris keempat dengan mengkueri tabel ________65______30
LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);_9Untuk melihat apa yang dimasukkan dengan mengganti nilai LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';85 yang tidak valid dengan nilai default, kueri tabel
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_0Dalam contoh ini, nilai null ________65______85 yang tidak valid diganti dengan nilai defaultnya. LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';_87
Baris yang Berisi Jumlah Bidang yang Tidak Valid
Ketika LOAD DATA INFILE "[!0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0 ditentukan, file sumber yang berisi baris dengan jumlah bidang yang tidak valid akan ditangani dengan salah satu dari dua cara
Bidang Terlalu Sedikit
Jika file sumber berisi satu atau lebih baris dengan terlalu sedikit bidang menurut skema tabel tujuan,
Kolom kosong setiap baris akan diperbarui dengan nilai default, dan
Baris tersebut akan dimasukkan ke dalam tabel tujuan
Terlalu Banyak Bidang
Jika file sumber berisi satu atau lebih baris dengan terlalu banyak kolom menurut skema tabel tujuan,
Setiap bidang ekstra di baris akan dibuang (diabaikan), dan
Baris tersebut akan dimasukkan ke dalam tabel tujuan
Contoh
Buat tabel baru dengan kolom LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; _92
LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';6File CSV berikut akan dimuat ke dalam tabel ini sebagai LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); 06. Ada dua hal yang salah dengan file ini
Baris 2 hanya berisi 3 kolom, bukan 4 dan tidak memiliki LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';91
Baris 4 berisi bidang tambahan, dengan total 5
Memuat data ke dalam tabel
LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4Perhatikan bahwa 4 baris dimasukkan meskipun jumlah bidang tidak valid untuk dua baris. Anda dapat memverifikasi kesalahan dengan baris keempat dengan mengkueri tabel ________65______30
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_4Perhatikan bahwa ada peringatan untuk nilai yang hilang di baris 2 dan nilai tambahan di baris 4. Untuk melihat bagaimana data disisipkan, kueri tabel
LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_5Baris 2 tidak memiliki nilai LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';_85, jadi nilai default untuk jenisnya dimasukkan sebagai gantinya. Nilai ekstra baris 4 dibuang, dan jika tidak, baris disisipkan dengan data yang diharapkan
Pertimbangan Kinerja
Kunci Pecahan
Memuat data ke dalam tabel dengan kunci beling memerlukan membaca kolom yang diperlukan pada agregator untuk menghitung kunci beling sebelum mengirimkan data ke daun. Untuk CSV LOAD DATA hanya , disarankan agar kolom yang disertakan dalam kunci beling muncul lebih awal di baris input, jika desain kunci beling atau format input . Urutan tidak berpengaruh signifikan terhadap performa Avro atau JSON LOAD DATA.
Pecahan Tanpa Kunci
Memuat data ke dalam tabel sharded tanpa kunci (tidak ada kunci shard yang dinyatakan, atau LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';94 ditentukan) akan menghasilkan kumpulan data yang dimuat ke dalam partisi yang berbeda, dengan cara round-robin. Lihat Shard Keys untuk informasi lebih lanjut
Ambil status pemuatan
Tabel LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';_95 melaporkan informasi tentang baris dan byte yang dibaca oleh kueri LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);7 yang sedang berlangsung
Itu juga melaporkan aktivitas dan nama database, yang bisa Anda gunakan untuk menemukan baris yang sesuai di tabel profil beban kerja. Lihat Referensi Tampilan Manajemen untuk detail lebih lanjut
Penting
Kumpulan hasil hanya akan dikembalikan jika LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';97 dikueri pada agregator yang sama dengan kueri LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';98 yang sedang berlangsung