Frage Wie listet man Warnungen vom 'mysqlimport' Dienstprogramm auf?


Zu Beginn geht es nicht darum, Daten aus MySQL selbst zu laden, sondern über das Befehlszeilentool "mysqlimport".

Ich verwende es, um eine CSV direkt in eine Tabelle zu laden und muss die Warnungen sehen, die es erzeugt hat. Ich kann nicht scheinen, dass Warnungen mit ausführlichen oder debugging eingeschaltet angezeigt werden. Irgendwelche Ideen?

(MySQL 5.0.5)


26
2017-12-21 17:47


Ursprung




Antworten:


Mit mysqlimport ist das nicht möglich. Als Alternative können Sie jedoch Folgendes tun:

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

Ersetzen listOfColumnNames mit einer geeigneten getrennten Liste von Spalten.

Die Magie ist (wie Eduard bereits erwähnt hat), die Befehle LOAD DATA INFILE und SHOW WARNINGS gemeinsam in derselben Sitzung auszuführen, da mysqlimport keine Möglichkeit bietet, direkt auf die Warnungen zuzugreifen.


28
2017-12-21 19:25



Süß, danke! Ich hatte gerade angefangen, eine solche Aussage zu schreiben, nachdem ich Eduards Kommentar gesehen hatte. Danke yo! Vielen Dank - brink
Funktioniert das, wenn tables.csv ist eine lokale Datei (d. h. nicht auf dem Server der Datenbank)? - Raffi Khatchadourian
die folgenden Arbeiten für mich erstellen zuerst die Tabelle dann tun mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db  verbunden stackoverflow.com/questions/14127529/... - barlop
und kann z.B. über utf8 mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS; wie erwähnt stackoverflow.com/questions/4957900/... - barlop


Wie die anderen sagten, das eigentliche Problem ist, dass für SHOW WARNINGS zu arbeiten, müssen Sie in der gleichen verbundenen Sitzung sein. mysqlimport beendet die Verbindung zur Sitzung, sobald der Import abgeschlossen ist, sodass die Erfassung der Warnungen in der aktuellen Version unmöglich ist. Klingt wie eine Gelegenheit, einen Patch zu spenden. :)


4
2018-01-12 22:03





Ich habe auch keine Möglichkeit gefunden, Warnungen mit mysqlimport zu drucken. Aber da mysqlimport nichts außer "LOAD DATA INFILE" tut, warum benutzt du nicht den mysql-Befehl, um die Daten zu importieren, gefolgt von einem "SHOW WARNINGS"?


1
2017-12-21 18:58



Vielen Dank! Irgendwie nervt mysqlimport nicht wirklich nett: / - brink
Verwenden Sie die "WARNHINWEISE ANZEIGEN"; Befehl nach "LOAD". - Eduard Wirch