Проблема простая. Когда я выполняю следующий я получаю разные результаты в зависимости от того, работать я его из консоли MySQL и изнутри Python сценарий с использованием MySQLdb:Python MySQLdb LOAD LOCAL INFILE проблемы
LOAD DATA LOCAL INFILE '/tmp/source.csv' INTO TABLE test
FIELDS TERMINATED BY '|'
IGNORE 1 LINES;
Консоли дает следующие результаты:
- записи: 35002 Удалено: 0 пропущено: 0 Предупреждения: 0
Python (через .info()) возвращает следующее:
- записей: 34977 Удален: 0 пропущено: 0 Предупреждения: 8
Таким образом, в целом, тот же исходный файл, тот же запрос SQL, различные результаты.
С консоли я могу «ПОКАЗАТЬ ПРЕДУПРЕЖДЕНИЯ» получить лучший дескриптор, из-за которого возникают проблемы, и почему, но из Python я не могу определить, как это сделать или что еще более важно, что может быть причиной проблемы ,
Любые предложения?
- MySQL Server '5.1.41-3ubuntu12.1'
- Python '2.6.5'
- Таблицы MyISAM
Вы пытались изолировать одну строку, которая дает другое поведение? Вы можете делить пополам (делить завоевателя), чтобы изолировать линию, которая дает разные результаты в O (log (n)) времени программиста. –
После многих недель я пришел к выводу, что LOAD DATA LOCAL ... очень чувствителен к последнему значению столбца, особенно если это NULL. Простое изменение порядка столбцов работало для одного и того же файла данных ... но, как и большинство вещей, всегда существует обходной путь низкого уровня. – belvoir