我遇到了必须将硬编码数据添加到表中的情况。有成千上万的条目,有没有办法一次性通过查询添加它?数据类似于下面提到的格式:
'1777193992','1777535342','1777519577','1777725624','1777311315', '1771416476','1779312636','1777125359'
我试过这个:
SELECT '1777193992', '1777535342', '1777519577', '1777725624', '1777311315', '1771416476', '1779312636', '1777125359' FROM dual;
但它正在给我数据。我希望将数据插入列中。
答案 0 :(得分:3)
使用一堆INSERT命令创建一个脚本,每个值都有一个INSERT
然后将此脚本加载到您喜欢的编辑器中,并一次性运行。
在这种情况下,Ma最喜欢的方法是使用电子表格生成SQL命令。
使用电子表格,我可以在几分钟内生成数十万个值的脚本。
一个简单的例子(使用Google表格):
="INSERT INTO tablename( columnname ) VALUES( '"&A1&"' );"
COMMIT;
- 这是我们的SQL脚本,准备“一气呵成” - 只需将其加载到SQL Developer中并点击F5 < / LI>
INSERT INTO tablename( columnname ) VALUES( '1777193992' );
INSERT INTO tablename( columnname ) VALUES( '1777535342' );
INSERT INTO tablename( columnname ) VALUES( '1777519577' );
INSERT INTO tablename( columnname ) VALUES( '1777725624' );
INSERT INTO tablename( columnname ) VALUES( '1777311315' );
INSERT INTO tablename( columnname ) VALUES( '1771416476' );
INSERT INTO tablename( columnname ) VALUES( '1779312636' );
INSERT INTO tablename( columnname ) VALUES( '1777125359' );
COMMIT;
答案 1 :(得分:0)
如果您不想生成和运行大量单独的插入语句,可以通过几种方法将数据组合为单个插入,例如从双重中选择每个单独的值并将它们合并在一起:
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()
版本,但具体取决于您使用的语言和驱动程序。< / p>