Bagaimana cara satu daftar peringatan dari utilitas 'mysqlimport'?

28

Untuk memulai, ini bukan tentang memuat data dari dalam MySQL itu sendiri, tetapi menggunakan alat baris perintah "mysqlimport".

Saya menggunakannya untuk memuat CSV langsung ke tabel dan perlu melihat peringatan yang telah dihasilkan. Sepertinya saya tidak bisa mendapatkan peringatan untuk ditampilkan dengan kata kerja atau debugging dihidupkan. Ada ide?

(MySQL 5.0.5)

jurang
sumber

Jawaban:

31

Tidak mungkin dengan mysqlimport, namun sebagai alternatif, Anda dapat melakukan hal berikut:

mysql --execute="LOAD DATA LOCAL INFILE '$WORKDIR/$table.csv' INTO TABLE $table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES (listOfColumnNames); SHOW WARNINGS"

Ganti listOfColumnNamesdengan daftar kolom terpisah yang sesuai.

Ajaibnya adalah (seperti yang Eduard sebutkan sebelumnya) adalah untuk mengeksekusi LOAD DATA INFILE dan perintah SHOW PERINGATAN bersama dalam sesi yang sama, karena mysqlimport tidak menyediakan cara untuk mendapatkan peringatan secara langsung.

shollyman
sumber
Manis terima kasih Saya baru saja mulai menulis pernyataan seperti ini setelah melihat komentar Eduard. Terima kasih yo! Terima kasih
tepi
Apakah ini berfungsi jika tables.csvmerupakan file lokal (mis. Tidak pada server database)?
Raffi Khatchadourian
berikut bekerja untuk saya membuat tabel pertama kemudian melakukan mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db terkait stackoverflow.com/questions/14127529/...
barlop
dan dapat menambahkan misalnya tentang utf8 mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;seperti yang disebutkan stackoverflow.com/questions/4957900/…
barlop
masalah adalah bahwa kode keluar selalu 0jadi saya kira Anda harus mengurai output perintah untuk memeriksa apakah impor berhasil ketika di atas
dituliskan
5

Seperti yang lain mengatakan masalah sebenarnya adalah agar SHOW PERINGATAN berfungsi, Anda harus berada di sesi terhubung yang sama. mysqlimport terputus dari sesi segera setelah selesai mengimpor, membuat penangkapan peringatan itu tidak mungkin dilakukan di versi saat ini. Kedengarannya seperti kesempatan untuk menyumbangkan tambalan. :)

Vinny
sumber
1

Saya juga tidak menemukan cara untuk mencetak peringatan dengan mysqlimport. Tetapi karena mysqlimport tidak melakukan apa pun selain "LOAD DATA INFILE" mengapa Anda tidak menggunakan perintah mysql untuk mengimpor data yang diikuti oleh "SHOW WARNINGS"?

Eduard Wirch
sumber
Terima kasih! Agak menjengkelkan mysqlimport tidak benar-benar bermain bagus: /
Brink
Gunakan "TAMPILKAN PERINGATAN;" perintah setelah "LOAD".
Eduard Wirch