電子書籍の厳選無料作品が豊富!

テーブルの行を増やし、
データを一年文作成したいのですが・・・。

CREATE TABLE CALENDAR_TBL(
YYYYMMDD DATE NOT NULL,
DayData NUMBER(3) NULL
CONSTRAINT CALENDAR_TBL_PKEY PRIMARY KEY(YYYYMMDD));

このテーブルに、2005年のデータ365レコードを挿入したいのですが、
1つのINSERT文(SQL)で、できますでしょうか?
(※PL/SQLは除きます。)
※不可能であれば、SELECT文(下記のように)を一年分用意してUNIONで作成するのですが、
これ以外に簡単にできないでしょうか?

INSERT INTO CALENDAR_TBL
(
(SELECT SYSDATE + 000, DayData FROM CALENDAR_TBL)
UNION
(SELECT SYSDATE + 001, DayData FROM CALENDAR_TBL)
UNION
(SELECT SYSDATE + 002, DayData FROM CALENDAR_TBL)
UNION
(SELECT SYSDATE + 003, DayData FROM CALENDAR_TBL)
・・・(省略)・・・
UNION
(SELECT SYSDATE + 365, DayData FROM CALENDAR_TBL)
)

A 回答 (3件)

Jianchen さんの USER_TAB_COLUMNS を ALL_CATALOG に変更すれば問題ないと思います。



カタログテーブルはシステム情報を保持していて、 通常 X万件はあるのでオラクルが壊れない限り 365件を下回ることはありません。
    • good
    • 0
この回答へのお礼

お礼が遅くなりましたが、ありがとうございます。
やはり、UNIONを日付の数だけ、用意しました。
また、この回答は他でも使用させてもらいますね。

お礼日時:2005/09/16 11:45

こんにちは。



365以上のレコードが存在するテーブルがある事が大前提ですが…。
仮にUSER_TAB_COLUMNSが365レコード以上ある場合に
下記のようなSQL文を実行する事で実現できます。
※DayDataには何が入るのかわからないため、とりあえず1を格納。

INSERT INTO CALENDAR_TBL (YYYYMMDD,DayData)
SELECT SYSDATE+ROWNUM ,1
FROM USER_TAB_COLUMNS
WHERE ROWNUM < 366
;

参考までにどうぞ。

この回答への補足

回答ありがとうございます。
う~ん、この大前提抜きで
考えないといけないので・・・すいません。
やはり、UNIONを使うしかないのでしょうね。

補足日時:2005/09/02 15:33
    • good
    • 0

こんにちは。


私がよく大量データの試験用にやっていた手法です。
エクセルとかでデータを365件作ります。
この場合ですと日付が可変なのでしょうか?
そのデータをテキストエディタのマクロ機能を用い
(ひでまるとか)
INSERT文をデータ数分作ります。


INSERT INTO CALENDAR_TBL VALUES(20050901,001);
INSERT INTO CALENDAR_TBL VALUES(20050902,001);
INSERT INTO CALENDAR_TBL VALUES(20050903,001);
INSERT INTO CALENDAR_TBL VALUES(20050904,001);
         ・
         ・
         ・
INSERT INTO CALENDAR_TBL VALUES(20050831,001);

このtxtをファイル名つけて保存して
SQLplusのプロンプトで@実行してみてはいかがでしょうか?

データの仕様がよくわからないのですが
連番とかであればほんの数分で作成できますよ。

この回答への補足

投稿ありがとうございます、が
1つのINSERT文(SQL)で、行いたいので・・・すいません。
例えば、下記のような感じで(なんの言語がよく分かりませんが・・・。)
1月1日~12月31日までの、365行のデータを入れたいのです。
INSERT INTO CALENDAR_TBL
(while i=0,wk_YYYYMMDD = 20050101 to wk_YYYYMMDD > 20060000
i = i + 1
wk_YYYYMMDD = wk_YYYYMMDD + 1
(SELECT wk_YYYYMMDD, i FROM CALENDAR_TBL)
)

補足日時:2005/09/02 15:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!