Как импортировать 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, сделайте следующее:

  1. Используйте любой редактор электронных таблиц, например Microsoft Excel, чтобы добавить пустой столбец вместо столбца идентификатора.

  2. Если вы получаете ошибку «Неверное целочисленное значение:» для столбца «id» в строке 1 », заполните пустые идентификаторы, которые вы создали, с помощью нулей, они будут автоматически увеличиваться при вставке.

NB. При редактировании файла CSV с помощью редактора электронных таблиц просто проверьте, все ли столбцы, особенно столбцы с датами или деньгами, не отформатированы в соответствии с настройками редактора по умолчанию, которые могут отличаться от исходных форматов.

Лучший способ решить эту проблему: при импорте файла CSV в MYSQL установите флажок с надписью (Обновлять данные при обнаружении повторяющихся ключей при импорте (добавить ON DUPLICATE KEY UPDATE)) Как показано на снимке экрана. Скриншот страницы импорта данных MYSQL .

Другие вопросы по тегам