Як відображається попередження утиліти "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.