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.