Jak wyświetlać ostrzeżenia z narzędzia „mysqlimport”?


28

Na początek nie chodzi o ładowanie danych z poziomu samego MySQL, ale za pomocą narzędzia wiersza polecenia „mysqlimport”.

Używam go do ładowania pliku CSV bezpośrednio do tabeli i muszę zobaczyć wygenerowane ostrzeżenia. Nie mogę wyświetlać ostrzeżeń, aby wyświetlały się przy włączonym gadatliwym mówieniu lub debugowaniu. Jakieś pomysły?

(MySQL 5.0.5)

Odpowiedzi:


31

Z mysqlimport nie jest to możliwe, ale alternatywnie możesz wykonać następujące czynności:

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

Zamień listOfColumnNamesna odpowiednią oddzielną listę kolumn.

Magią jest (jak wspomniano wcześniej Eduard) wykonywanie razem komend LOAD DATA INFILE i SHOW WARNINGS w tej samej sesji, ponieważ mysqlimport nie zapewnia bezpośredniego dostępu do ostrzeżeń.


Kochanie, dziękuję! Właśnie zacząłem pisać takie oświadczenie po obejrzeniu komentarza Eduarda. Dzięki, yo! Dzięki
— skraj

Czy to działa, jeśli tables.csvplik lokalny (tj. Nie znajduje się na serwerze bazy danych)?
— Raffi Khatchadourian

następujące prace dla mnie najpierw stwórz tabelę, a następnie wykonaj mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db powiązane stackoverflow.com/questions/14127529/...
— barlop

i może dodać np. o utf8, mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;jak wspomniano stackoverflow.com/questions/4957900/…
— barlop

problemem jest to, że kod wyjścia jest zawsze, 0więc myślę, że musisz przeanalizować dane wyjściowe polecenia, aby sprawdzić, czy import się powiódł, gdy powyższe jest skryptowane (?)
— pkaramol

5

Podobnie jak inni powiedzieli, prawdziwym problemem jest to, że aby pokazać POKAŻ OSTRZEŻENIA, musisz być w tej samej połączonej sesji. mysqlimport rozłącza się z sesją, gdy tylko zakończy importowanie, co uniemożliwia przechwycenie ostrzeżeń w bieżącej wersji. Brzmi jak okazja do przekazania łatki. :)


1

Nie znalazłem też sposobu na wydrukowanie ostrzeżeń za pomocą mysqlimport. Ale skoro mysqlimport robi tylko „LOAD DATA INFILE”, dlaczego nie użyć komendy mysql do zaimportowania danych, a następnie „POKAŻ OSTRZEŻENIA”?


Dzięki! Niby irytujący mysqlimport nie gra zbyt dobrze: /
— brink

Użyj „POKAŻ OSTRZEŻENIA”; polecenie po „LOAD”.
— Eduard Wirch
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.