Mysql memuat data infile lokal beberapa file

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 ''_0

Jalankan perintah berikut

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_1

Menggunakan 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_______3

Kueri 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 ''_4

Jika 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 ''_5

Menggunakan 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 ''_6

Menggunakan 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 ''8

Jalankan kueri berikut

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY ''_9

Dalam 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); _0

dan kemudian jalankan kueri berikut

LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (fourth, third, second, first); _1

mengembalikan 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); 3

Dalam 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); _4

Memfilter 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); _5

Anda 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); _6

Sementara 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); _7

Asumsikan 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); _8

Buat 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); _9

Saat 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); 0

Memuat 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); 1

LOAD 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); 2

Jalankan pernyataan LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_7

LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 3

LOAD 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); 4

Memuat 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); 5

DATA BEBAN JSON

Sintaksis

LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 6

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); 7

Kemudian dapat dimuat sebagai berikut

LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 8

Contoh 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); _9

Kemudian kita dapat melakukan ________10______7 yang lebih rumit

LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 0

Ada 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 ','; _1

Lihat 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 ','; _3

Jalur 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 ','; _4

LOAD DATA INFILE 'foo.tsv' INTO TABLE foo (bar, @, @, baz); 78 berisi tiga nilai Avro yang pengkodean JSON-nya

LOAD DATA INFILE 'foo.csv' INTO TABLE foo COLUMNS TERMINATED BY ','; 5

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 ','; _6

LOAD 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 ','; _7

Contoh 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 ','; _8

Pengkodean 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 ','; _9

Ada 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';0

Argumen

  • 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';1

Pencatatan 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';2

File 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';3

Memuat data ke dalam tabel

LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';4

Setelah menghapus kolom ekstra dari baris 2

LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';5

Setelah 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';6

Baris 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';7

File 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';8

Memuat data ke dalam tabel

LOAD DATA INFILE 'foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';_9

Baris 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';2

File 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 '|||'; 1

Memuat data ke dalam tabel

LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 2

Perhatikan 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 '|||'; 3

SKIP 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 '|||'; 4

File 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 '|||'; 5

Memuat data ke dalam tabel

LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; 6

Perhatikan 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 '|||'; 7

LEWATKAN 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 '|||'; 4

File 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

LOAD DATA INFILE 'foo.oddformat' INTO TABLE foo COLUMNS TERMINATED BY '|||'; _9

Memuat data ke dalam tabel

LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);0

Hanya 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);1

LOAD 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';6

File 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 '|||'; 1

Memuat data ke dalam tabel

LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4

Perhatikan 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 '|||'; 3

Baris 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';6

File 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);7

Memuat data ke dalam tabel

LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4

Perhatikan 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);_9

Untuk 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);_0

Dalam 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';6

File 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

LOAD DATA INFILE "????.csv" INTO TABLE cust(ID,NAME,ORDERS);_2

Memuat data ke dalam tabel

LOAD DATA INFILE "[0-9]*.csv" INTO TABLE cust(ID,NAME,ORDERS);4

Perhatikan 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);_4

Perhatikan 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);_5

Baris 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

Bagaimana cara mengimpor banyak file CSV di MySQL?

Catatan. Jika Anda perlu mengekspor tabel terlebih dahulu, lihat artikel kami di Cara Mengekspor Tabel dari MySQL ke CSV. .
Langkah 1. Akses MySQL Shell. .
Langkah 2. Buat Tabel MySQL untuk Impor CSV. .
Langkah 3. Impor CSV ke Tabel MySQL

Bagaimana cara mengimpor data massal di MySQL?

Sintaks untuk memasukkan data massal di MySQL .
Ketikkan klausa INSERT INTO dan nama tabel tempat Anda ingin memasukkan data
Gunakan klausa NILAI lalu di dalam tanda kurung tulis data baris pertama, tutup tanda kurung, dan setelah tanda koma

Bagaimana cara memuat data infile lokal di MySQL?

Metode 2. Menggunakan Command-Line dan MySQL Workbench untuk Memuat Data dari File ke Tabel di MySQL .
Langkah 1. Buat tabel
Langkah 2. Mengimpor Data ke Tabel Anda
Langkah 3. Mengubah Data saat Mengimpor
Langkah 4. Mengimpor File dari Klien ke Server Database MySQL jarak jauh
Langkah 5. Mengimpor File CSV menggunakan MySQL Workbench

Apa perbedaan antara memuat data infile lokal dan memuat data infile?

LOAD DATA INFILE mendapatkan file dari sistem file lokal server database . File harus berada di direktori database atau memiliki izin baca dunia, dan nama pengguna klien harus memiliki hak istimewa FILE. LOAD DATA LOCAL INFILE membaca file di klien, dan mengirimkan isinya ke server.

Postingan terbaru

LIHAT SEMUA