まず第一に、ヤン・ドヴォルザークとマイケル・ベルコウスキーの両方が言ったことは絶対に真実です。したがって、このハックが本当に必要かどうかを注意深く確認してください。
しかし念のため、これはすべての ID をテーブルに挿入します - ID が主キーであり、まだ存在していない場合に限ります。
他のほとんどの方法の方が優れていますが (手動で行う場合を除く)、MySQL または他の言語での手順が必要です。
-- insert IDs from 1 to 1701, plus another field "otherfield" with value "othervalue"
-- The maximum ID here is about 2400, but you said you needed at most 1400.
-- And you can add 1000 instead of 1 to the value of 'id' and run it again
-- to insert ids from 1000 to 2701 :-)
INSERT IGNORE INTO yourtable
(id, otherfield)
SELECT id, 'othervalue'
FROM (
SELECT 1+a.x+b.x*7+c.x*49+d.x*343 AS id FROM
( SELECT 0 AS x UNION SELECT 1 UNION SELECT 2 UNION
SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ) AS a
JOIN
( SELECT 0 AS x UNION SELECT 1 UNION SELECT 2 UNION
SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ) AS b
JOIN
( SELECT 0 AS x UNION SELECT 1 UNION SELECT 2 UNION
SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ) AS c
JOIN
( SELECT 0 AS x UNION SELECT 1 UNION SELECT 2 UNION
SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 ) AS d
) AS generated
WHERE generated.id < 1701;
私が言ったように、これは物事を行うための非常に醜い方法です。
利用可能な言語がある場合は、挿入クエリを生成して実行できます。たとえば、bash で実行できます。
( for id in $( seq 1 1400 ); do
echo "INSERT IGNORE INTO mytable ( id, otherfield ) VALUES ( $id, 'hello' );"
done ) | mysql databasename
または PHP、Python、Perl では、次の形式の SQL INSERT ステートメントを生成するだけです。
INSERT IGNORE INTO mytable ( id ) VALUES ( ... );
増分カウンターで空白を埋めてから、ステートメントをデータベースに送信します。はIGNORE
、すでに存在する値をスキップします。空欄を埋める方法は、選択した言語によって異なります。他のフィールドに入力する必要がある場合はid
、空白の後に名前を入力し、そのデフォルト値を入力します。