Я пытаюсь загрузить файл CSV + 75mb с файлами 650k + в сервер MySQL на Centos Linux. Это всего лишь один пример. Я также пробовал то же самое с файлом 350 Мбайт и рядами 1,75 м.Ошибка сопоставления строк импорта MySQL в одном файле и DB
Я пробовал обе эти функции импорта MySQL через командную строку. В любое время я импортирую тот же файл в пустую таблицу. Количество строк отличается (непоследовательно).
- Обрезать стол.
- Импорт из командной строки.
- Проверьте количество строк.
- Повторите
Вот мои результаты:
- 640.568
- 636.547
- 644.483
- 640.961
и дальше, и дальше, и на .. ..
Я пробовал эти два различных метода импорта:
mysql -u root -ppassword --execute="USE DBNAME;LOAD DATA INFILE '/home/scripts/extracts/NAMEOFTABLE.CSV' INTO TABLE NAMEOFTABLE FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';" --show-warnings
выход пуст, никаких предупреждений или ошибок (я не видел их раньше, так что я знаю, что это работает)
mysqlimport -u root -ppassword --fields-terminated-by=, --local DBNAME /home/scripts/extracts/NAMEOFTABLE.CSV
Это Выведет : DBNAME.NAMEOFTABLE: Записи: 647435 Удалено: 0 Пропущено: 0 Предупреждения: 647435
Это в первую очередь интересно, но тогда я проверяю строки в БД, и это всего лишь 640 480. :(
Я был на этом в течение нескольких дней. Спасибо за вашу помощь.
Ее возможно, что если есть «комментарии», как полей данных, что внедренные новой строки в данных этой области, что Мессинг вещи, но странно, что он (ish) несовместимо. В любом случае это звучит как da ta поврежден. Я бы сделал анализ моих данных. 'wc <файл; awk 'END {print "NumberOfRecs =" NR}' файл; awk -F "," -v numOfCols = 31 '{if (NF! = numOfCols) {print "err:" NR "найдено" NF "rec:" $ 0}' file' и т. д. (Конечно, измените '31' на правильное значение). Удачи. – shellter
Doah, только что заметил, что в вашем сообщении для импорта есть 'предупреждения: 647435'. Вам нужно будет выяснить, что это значит. Погрузчик говорит вам, что есть проблема. Я ожидаю, что он создаст файл журнала ошибок где-нибудь или что вы можете добавить опцию для создания такого файла. ИЛИ если вы переадресовываете как '2>/dev/null' и не сообщают об этом, то измените на' 2> ./ myErrorLog.txt'. Удачи. – shellter
Спасибо, но я не смог заставить вашу первую команду работать. Добавление 2> ./ myErrorlog.txt не работает или не является необходимым, потому что я получаю тот же результат, что и при запуске командной строки.Я догадываюсь, что до сих пор остается mysql не печатать все 647k «предупреждения». –