Nonaktifkan output konsol saat mengeksekusi file SQL menggunakan perintah sumber MySQL

8

Saya mulai dengan meluncurkan alat baris perintah MySQL:

mysql --user=myusername --password=mypassword --silent --force -b

-bOpsi terakhir digunakan untuk menonaktifkan bip saat kesalahan.

Lalu saya memilih basis data:

use Mydatabasename;

Lalu saya mengeksekusi SQL membentuk file seperti ini:

source c:\x\y\z\myfile.sql

Saat itulah segalanya berjalan lambat. Saya telah mengeksekusi sebagian file sebelumnya sehingga konsol diisi dengan kesalahan baris duplikat yang memperlambat eksekusi. Saya mendapatkan 5-10 pernyataan dieksekusi per detik. Tanpa baris duplikat kode mengeksekusi puluhan ribu pernyataan (30k +) setiap 5 detik.

Saya perlu melakukan ini karena file tersebut besar dan saya tidak bisa menjalankannya dalam sekali jalan.

Mzn
sumber

Jawaban:

10

Inilah masalahnya. OS memiliki dua mode untuk mencetak sesuatu

  • stdout
  • stderr

Satu- --silent satunya yang mempengaruhi stdout. Bagaimana Anda memaku stderr?

Coba salah satu dari yang berikut ini, dan lihat apakah itu berfungsi:

mysql --user=myusername --password=mypassword --silent --force -b 2> nul
mysql --user=myusername --password=mypassword --silent --force -b --tee=nul

Cobalah !!!

CAVEAT: Saya pernah menangani hal ini sebelumnya ketika menjawab pertanyaan tentang mysqldump: Bagaimana cara mencatat output verbose dari mysqldump?

RolandoMySQLDBA
sumber
Apakah "2> nul" berarti mengarahkan aliran output kedua (stderr) menjadi sia-sia? Saya baru saja mengeksekusi skrip besar saya dan saya pikir itu masih melalui duplikat (tidak menggunakan diam hanya 2> nul). Saya pikir saya perlu membagi file sumber ... Terima kasih banyak.
Mzn
1
Ya, output untuk NULmenulis sama sekali tidak ada. Anda dapat melakukannya 2>stderr.txtjika Anda mau.
RolandoMySQLDBA