私は、auto_incrementとマークされた簡単な主キーを持つテーブルを持っています。MySqlのLOAD DATAが主キーIDを無視していて、代わりにautoincrementを使用しています
(MySQL 5.0.77を使用)私は繰り返しLOAD DATA操作を行います。プライマリキーの値を完全に制御して、すべてのデータを上書きする必要があります。
LOAD DATA LOCAL INFILE "TopicInfile.dat" INTO TABLEトピックライン "END-OF-THIS-RECORD"によって終了しました。
.datファイルにはIDが含まれています。それはNULLではありません。しかし、このデータを読み込むと、あたかも指定されたものを使用するのではなく、NULLであるかのように動作し、autoincrement idを割り当てます。
この.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 |
私は行動が罰金であるため、他のテーブル持っている - 常に負荷データの操作を上記の表を除き、私のid値を受け入れます。
助けてください。
「TopicInfile.dat」の区切り文字は何ですか? – Asaph
レコードは、次のテキストで区切られています。 "END-OF-THIS-RECORD"改行文字ですか? –
私は行区切り記号ではなく、列区切り記号を意味します。 – Asaph