2

複数の load ステートメントを使用してレコードを挿入するときにプライマリ ID をスキップしないようにするにはどうすればよいですか?

LOAD ステートメントを使用して、150 レコードを含むファイルをテーブルに挿入しました。

挿入後のテーブルの最後のプライマリ ID は 150 です。

ここで、load ステートメントを使用して 100 レコードの別のファイルを挿入すると、最初のレコードに割り当てられるプライマリ ID が 151 ではなく 251 になります。

これらのプライマリ ID の浪費を避けるにはどうすればよいですか?

詳細情報: 例:

mysql> desc test_data;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)     | NO   | UNI | NULL    |                |
| image      | varchar(255)     | NO   |     | NULL    |                |
| created_at | datetime         | NO   |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

私の負荷ステートメント -

 LOAD DATA LOCAL INFILE '~/test_2.dat' 
       INTO TABLE test_data 
       FIELDS TERMINATED BY '|' 
       LINES TERMINATED BY '\n' 
       set created_at=CURRENT_TIMESTAMP;

ファイル test_2.dat のサンプル データ:

|Peter|peter.jpg
|sam|sam.jpg
|radnor|radnor.jpg
|bruce|bruce.jpg

これは、そのファイルをロードした後のテーブル構造です。

mysql> show create table test_data;

| test_data | CREATE TABLE `test_data` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `image` varchar(255) NOT NULL,
  `created_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 |

現在、このテーブルの max(id) は 4 です。しかし、AUTO_INCREMENT 値が「8」に設定されているのはなぜですか? 「5」に設定すべきではありませんか?

4

1 に答える 1

0

プライマリIDでAUTO_INCREMENTをtrueにマークして、ロード中にそれらをスキップできます。いくつかのより多くの情報はより良い答えを助けることができます。

于 2012-06-11T14:56:12.790 に答える