2015-12-09 1 views
0

Я пытаюсь загрузить файл CSV + 75mb с файлами 650k + в сервер MySQL на Centos Linux. Это всего лишь один пример. Я также пробовал то же самое с файлом 350 Мбайт и рядами 1,75 м.Ошибка сопоставления строк импорта MySQL в одном файле и DB

Я пробовал обе эти функции импорта MySQL через командную строку. В любое время я импортирую тот же файл в пустую таблицу. Количество строк отличается (непоследовательно).

  1. Обрезать стол.
  2. Импорт из командной строки.
  3. Проверьте количество строк.
  4. Повторите

Вот мои результаты:

  • 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. :(

Я был на этом в течение нескольких дней. Спасибо за вашу помощь.

+0

Ее возможно, что если есть «комментарии», как полей данных, что внедренные новой строки в данных этой области, что Мессинг вещи, но странно, что он (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

+0

Doah, только что заметил, что в вашем сообщении для импорта есть 'предупреждения: 647435'. Вам нужно будет выяснить, что это значит. Погрузчик говорит вам, что есть проблема. Я ожидаю, что он создаст файл журнала ошибок где-нибудь или что вы можете добавить опцию для создания такого файла. ИЛИ если вы переадресовываете как '2>/dev/null' и не сообщают об этом, то измените на' 2> ./ myErrorLog.txt'. Удачи. – shellter

+0

Спасибо, но я не смог заставить вашу первую команду работать. Добавление 2> ./ myErrorlog.txt не работает или не является необходимым, потому что я получаю тот же результат, что и при запуске командной строки.Я догадываюсь, что до сих пор остается mysql не печатать все 647k «предупреждения». –

ответ

0

Попробуйте этот запрос, чтобы импортировать CSV из PHPMyAdmin или любого другого клиента тузд

перед обжигом запроса, пожалуйста, убедитесь, что таблица соответствующие поля уже созданы в дб.

LOAD DATA LOCAL INFILE '/home/scripts/extracts/NAMEOFTABLE.CSV' INTO TABLE `tbl_csvs` 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
(comma separated fields name here field1, field2, field3);