Как импортировать CSV-файл в таблицу MySQL и автоинкремент
Я пытаюсь импортировать CSV-файл в MySQL с помощью следующей команды:
mysqlimport --columns=name,amount,desc --ignore-lines=1 --fields-terminated-by=, --verbose --local -u muser -p mydb file.csv
Файл содержит поля, но не первичный ключ. Это выглядит так:
name, amount, desc
Моя таблица MySQL выглядит так:
CREATE TABLE `organization` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
`amount` varchar(128) DEFAULT NULL,
`desc` varchar(128) DEFAULT NULL,
Как я могу использовать mysqlimport
для того, чтобы импортировать CSV-файл и генерировать автоматически увеличенные идентификаторы?
Когда я запускаю это, я получаю следующую ошибку:
mysqlimport: ошибка: 1467, не удалось прочитать значение автоинкремента из механизма хранения при использовании таблицы: организация
4 ответа
Используйте параметр --columns, чтобы указать отображение полей. Порядок имен столбцов указывает, как сопоставить столбцы файла данных со столбцами таблицы.
mysqlimport --columns=name,amount,desc...
Расширить ваш CSV с ведущим пустым полем:
id,name,amount,desc
,john,10,xz
,paul,20,ac
Для тех, кто использует пользовательский интерфейс phpmyadmin для импорта и / или ваша таблица может иметь очень большое количество столбцов, и вы не хотите импортировать с помощью длинного и утомительного оператора sql, сделайте следующее:
Используйте любой редактор электронных таблиц, например Microsoft Excel, чтобы добавить пустой столбец вместо столбца идентификатора.
Если вы получаете ошибку «Неверное целочисленное значение:» для столбца «id» в строке 1 », заполните пустые идентификаторы, которые вы создали, с помощью нулей, они будут автоматически увеличиваться при вставке.
NB. При редактировании файла CSV с помощью редактора электронных таблиц просто проверьте, все ли столбцы, особенно столбцы с датами или деньгами, не отформатированы в соответствии с настройками редактора по умолчанию, которые могут отличаться от исходных форматов.
Лучший способ решить эту проблему: при импорте файла CSV в MYSQL установите флажок с надписью (Обновлять данные при обнаружении повторяющихся ключей при импорте (добавить ON DUPLICATE KEY UPDATE)) Как показано на снимке экрана. Скриншот страницы импорта данных MYSQL .