Come si elencano gli avvisi dall'utilità "mysqlimport"?


28

Per iniziare, non si tratta di caricare i dati dall'interno di MySQL, ma di utilizzare lo strumento da riga di comando "mysqlimport".

Lo sto usando per caricare un CSV direttamente in una tabella e ho bisogno di vedere gli avvisi che ha generato. Non riesco a ricevere avvisi da visualizzare con verbose o debug attivati. Qualche idea?

(MySQL 5.0.5)

Risposte:


31

Non è possibile con mysqlimport, tuttavia in alternativa è possibile effettuare le seguenti operazioni:

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

Sostituisci listOfColumnNamescon un elenco di colonne separato appropriato.

La magia è (come precedentemente menzionato da Eduard) è eseguire i LOAD DATA INFILE e i comandi SHOW WARNINGS nella stessa sessione, poiché mysqlimport non fornisce un modo per ottenere direttamente gli avvisi.


Dolce grazie! Avevo appena iniziato a scrivere una dichiarazione come questa dopo aver visto il commento di Eduard. Grazie yo! Grazie
baratro il

Funziona se tables.csvè un file locale (cioè non sul server del database)?
Raffi Khatchadourian,

le seguenti opere per me creare la tabella prima poi fare mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db correlato stackoverflow.com/questions/14127529/...
barlop

e può aggiungere ad esempio su utf8 mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;come detto stackoverflow.com/questions/4957900/...
barlop

un problema è che il codice di uscita è sempre 0quindi suppongo che tu debba analizzare l'output del comando per verificare se l'importazione è riuscita quando viene scritto lo script sopra (?)
pkaramol

5

Come hanno detto gli altri, il vero problema è che per far funzionare SHOW WARNINGS devi essere nella stessa sessione connessa. mysqlimport si disconnette dalla sessione non appena termina l'importazione, rendendo impossibile l'acquisizione dei suoi avvisi nella versione corrente. Sembra un'opportunità per donare una patch. :)


1

Non ho trovato alcun modo per stampare avvisi con mysqlimport. Ma dal momento che mysqlimport non fa altro che "LOAD DATA INFILE" perché non usi il comando mysql per importare i dati seguiti da un "SHOW WARNINGS"?


Grazie! Un po 'di irritante mysqlimport non gioca davvero bene: /
brink

Utilizzare "MOSTRA AVVERTENZE;" comando dopo "LOAD".
Eduard Wirch,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.