Як відображається попередження утиліти "mysqlimport"?


28

Для початку мова йде не про завантаження даних всередині самого MySQL, а про використання інструменту командного рядка "mysqlimport".

Я використовую його для завантаження CSV безпосередньо в таблицю і мені потрібно переглянути попередження, які він створив. Я не можу отримати попередження для відображення із вмиканням багатослівної роботи та налагодженням. Будь-які ідеї?

(MySQL 5.0.5)

Відповіді:


31

З mysqlimport це неможливо, проте в якості альтернативи ви можете зробити наступне:

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

Замініть listOfColumnNamesвідповідним відокремленим списком стовпців.

Магія (як Едуард згадував раніше) полягає у виконанні команд ЗАВАНТАЖЕННЯ ДАНИХ ІНФІЛЮ та команд ПОКАЗУВАННЯ ПОПЕРЕДЖЕННЯ разом у тому ж сеансі, оскільки mysqlimport не забезпечує способу потрапляння на попередження безпосередньо.


Солодкий, дякую! Я щойно почав писати подібну заяву, побачивши коментар Едуарда. Дякую, йо! Дякую
грань

Чи працює це, якщо tables.csvлокальний файл (тобто не на сервері бази даних)?
Раффі Хатчадурян

наступні роботи для мене створити таблицю першої потім зробити mysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db відповідний stackoverflow.com/questions/14127529 / ...
barlop

і можна додати , наприклад , про utf8 , mysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;як зазначено stackoverflow.com/questions/4957900 / ...
barlop

проблема полягає в тому, що код виходу завжди, 0тому я думаю, вам доведеться проаналізувати вихід команди, щоб перевірити, чи вдалося імпортувати, коли написано вище (?)
pkaramol

5

Як і інші, хто сказав, що справжня проблема полягає в тому, що для роботи ПОКАЗУВАННЯ ПРАЦІВ ви повинні перебувати на тому ж підключеному сеансі. mysqlimport відключається від сеансу, як тільки він закінчує імпорт, що робить неможливе отримання його попереджень у його поточній версії. Це звучить як можливість подарувати пластир. :)


1

Я також не знайшов способу друкувати попередження за допомогою mysqlimport. Але оскільки mysqlimport не робить нічого, окрім "ЗАВАНТАЖИТИ ДАНІ ВНУТРЕННЯ", чому б ви не скористалися командою mysql для імпорту даних, що супроводжувалась "ПОКАЗУВАТИ ПОПЕРЕДЖЕННЯ"?


Спасибі! Вид дратує mysqlimport дійсно не грають добре: /
грядуть

Використовуйте "ПОКАЗУЙТЕ ПОПЕРЕДЖЕННЯ;" команда після "ЗАВАНТАЖИТИ".
Едуард Вірч
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.