如果你不想生成並運行大量的個人INSERT語句有幾種方法可以將數據作爲單個插入結合,如雙重選擇每個單獨的值和unioning在一起:
insert into tablename(columnname)
select '1777193992' from dual
union all select '1777535342' from dual
union all select '1777519577' from dual
union all select '1777725624' from dual
union all select '1777311315' from dual
union all select '1771416476' from dual
union all select '1779312636' from dual
union all select '1777125359' from dual
/
或the insert all
syntax稍微濫用多表插入的想法:
insert all
into tablename(columnname) values ('1777193992')
into tablename(columnname) values ('1777535342')
into tablename(columnname) values ('1777519577')
into tablename(columnname) values ('1777725624')
into tablename(columnname) values ('1777311315')
into tablename(columnname) values ('1771416476')
into tablename(columnname) values ('1779312636')
into tablename(columnname) values ('1777125359')
select * from dual
/
您可以通過修改@krokodilko顯示的內容來從Excel生成這些文件。
您還可以創建一個集合,您可以使用各個值填充該集合;這裏使用built-in odcivarchar2list
collection type:
insert into tablename(columnname)
select column_value
from table(sys.odcivarchar2list('1777193992', '1777535342', '1777519577',
'1777725624', '1777311315', '1771416476', '1779312636', '1777125359'))
/
...儘管你可能有問題more than 1000 entries listed like that,你可以解決由PL/SQL填充集合 - 這使得這種方法在這種情況下,缺乏吸引力。
但是,如果您有一個值列表,那麼您可能會發現通過external table或SQL*Loader甚至通過SQL Developer的導入機制加載它們會更容易。
如果您在自己的應用程序中有該列表,您可能可以從數組中填充集合,然後使用上面的table()
版本,但具體取決於您使用的語言和驅動程序。
成千上萬的值來自哪裏?如果你有它們的文件,那麼外部表或SQL \ * Loader將是選項。如果沒有其他方法,但你必須稍微處理值列表。 (還有什麼是目標列數據類型?你所有的例子都是數字,但你把它們當作字符串處理?) –