2011-08-15 9 views
1

私は、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値を受け入れます。

助けてください。

+0

「TopicInfile.dat」の区切り文字は何ですか? – Asaph

+0

レコードは、次のテキストで区切られています。 "END-OF-THIS-RECORD"改行文字ですか? –

+0

私は行区切り記号ではなく、列区切り記号を意味します。 – Asaph

答えて

0

アイテムがnullとして扱われた理由を正確にはわかりません。

は参照してください::
を正しく動作している

私は、入力ファイルの内容を一部変更(タブ文字ではない、かなり右)を作って、LOAD DATAコマンド(EOL文字ではない右)に、 MySQL LOAD DATA with multiline data

関連する問題