PKをインクリメントするだけで、既存の1つのレコードを使用して100万レコードをテーブルに挿入する必要があります。それを行う簡単な方法はありますか?
はい、簡単な方法があります。これは、100万行を生成し、既存のテーブル(この場合はデュアル)から単一の行にクロス結合する簡単な例です。
WITH dummy AS (SELECT LEVEL lvl
FROM dual
CONNECT BY LEVEL <= 1000)
SELECT sd.col1, -- replace with your column list that you want to insert into the table
ROWNUM pk -- replace with the sequence used to generate the pk, e.g.: pk_seq.nextval
FROM (SELECT 'abc' col1 FROM dual) sd -- replace with your 1 row selected from your table
CROSS JOIN dummy
CROSS JOIN dummy;
COL1 PK
---- ----------
abc 1
abc 2
abc 3
abc 4
...
したがって、挿入ステートメントは次のようになります。
insert into your_table (pk_col, col1, col2, col3, ...)
WITH dummy AS (SELECT LEVEL lvl
FROM dual
CONNECT BY LEVEL <= 1000)
SELECT your_table_pk_seq.nextval pk_col,
yt.col1,
yt.col2,
yt.col3,
...
FROM your_table yt
CROSS JOIN dummy
CROSS JOIN dummy;
これは、主キー列の値を生成するシーケンスがあることを前提としています。もちろん、どれがありますか?
ただし、これは奇妙な要件です。テストデータの作成に使用している場合を除きますか?その場合、より現実的なデータを作成するために、他のいくつかの列を変更していることを願っています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加