MySql LOAD DATA игнорирует мой идентификатор первичного ключа и вместо этого использует автоинкремент - PullRequest
1 голос
/ 15 августа 2011

У меня есть таблица с простым первичным ключом, помеченным как auto_increment.

(Использование MySQL 5.0.77) Я выполняю повторные операции LOAD DATA. Мне нужно перезаписать все данные с полным контролем над значением моего первичного ключа.

ЗАГРУЗИТЬ ДАННЫЙ ЛОКАЛЬНЫЙ ИНФИЛЬ "TopicInfile.dat" В ТАБЛИЦУ ЛИНИЙ ТЕМ, ПРЕКРАЩЕННЫХ "КОНЕЦ ЭТОЙ ЗАПИСИ";

Файл .dat содержит идентификатор. Это не NULL. И все же, когда я загружаю эти данные, они ведут себя так, как будто они имеют значение NULL, и вместо идентификатора, который я указал, присваивают идентификатор автоинкремента.

Единственное, что необычно в этом файле .dat, это то, что он содержит много данных. Файл .dat имеет следующую структуру:

1   2008-06-27 12:00:00 Type-Safe Enumerations  Énumérations    5   
...a lot of data here...
    \N  2002-10-01 12:00:00 END-OF-THIS-RECORD
2   2008-06-27 12:00:00 Class for constants Classe pour constantes  1   
...a lot of data here...
    \N  2002-10-01 12:00:00 END-OF-THIS-RECORD

и т. Д.

Структура таблицы:

CREATE TABLE `Topic` (
  `Id` smallint(5) unsigned NOT NULL auto_increment,
  `LastEdit` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `TitleEnglish` varchar(75) NOT NULL default '',
  `TitleFrench` varchar(75) default NULL,
  `ChapterId` smallint(6) NOT NULL default '0',
  `BodyEnglish` text NOT NULL,
  `BodyFrench` text,
  `CreationDate` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=251 DEFAULT CHARSET=utf8 |

У меня есть другие таблицы, с которыми поведение в порядке - операция LOAD DATA всегда принимает мое значение id, кроме приведенной выше таблицы.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 25 августа 2011

Я не знаю точно, почему предметы рассматривались как нулевые.

Я внес некоторые изменения в содержимое входного файла (символы табуляции не совсем правильные) и в команду LOAD DATA (символ EOL не прав), которая теперь ведет себя правильно:

См .:
MySQL LOAD DATA с многострочными данными

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