Db2
從具有與 Table1 相同結構的表中載入數據,唯一的區別是 ID 非空列?
所以,我知道如果你想將數據載入到與資料結構不同的表中,那麼你必須以逐列的方式進行,在這種情況下,我有很多表與 table2 的唯一不同之處在於創建了一個 indentity 列。所以我的問題是,有沒有一種方法可以載入數據
db2 INSERT INTO table2 SELECT * FROM table1
但跳過此標識列?以某種方式在我可以告訴數據庫的語法中?逐列語法執行此操作將花費大量時間。
您可以製作身份列
IMPLICITLY HIDDEN
。CREATE TABLE T(I INT NOT NULL GENERATED BY DEFAULT AS IDENTITY, A INT) ALTER TABLE T ALTER COLUMN I SET IMPLICITLY HIDDEN INSERT INTO T VALUES (42) SELECT I, A FROM T
將輸出
I|A -|------ 1| 42
如果源表和目標表沒有完全相同的列,以相同的順序創建,則無法避免指定要在何處插入哪些列,以一種或另一種方式。
您可以在
insert
語句中指定它們,但不包括標識列:insert into target (col1, col2) select * from source
或者,如果您定期執行此類插入,您可以通過定義一次基於目標表的視圖來省去一些未來的麻煩:
create view v_target as select col1, col2 from target; insert into v_target select * from source;