使用Toad将Excel电子表格导入到Oracle
我正在尝试使用Toad将Excel电子表格导入到Oracle中。 问题是我导入的表有一个主键字段,我使用“sequence”.nextval来填充正常的存储过程插入。
使用Toad导入向导,我尝试把'table_seq.nextval'作为expression式,但是当我在最后执行向导时出现错误:无法将types(UnicodeString)的变体转换为types(Double)。
那么是否有可能使用蟾蜍导入向导使用sequence.nextval导入Excel数据还是有更好的方法吗?
我也给了一些想法,让Excel通过开始超出当前表中的种子来生成密钥。 但是对Oracle来说是新手,会不会把我为表格设置的顺序搞乱呢? 例如,如果在插入之前,下一个可用的ID是500,而Excel中的插入插入的行是500到5000,那么对于该表序列的存储过程的下一次执行尝试使用500?
提前致谢!
是的,序列将保持在50,并且在使用存储过程时, primary key violated
将被primary key violated
。
这是因为序列没有以任何方式链接到表。 并且不能被链接。 他们是分开的对象。
我看到的最好的办法是使用on insert for each row
触发器on insert for each row
设置为nextval
的id。
代码示例:
CREATE OR REPLACE TRIGGER trg_table_name_set_id BEFORE INSERT ON table_name FOR EACH ROW BEGIN SELECT table_seq.nextval INTO :new.id FROM DUAL; --id would be the id column in your table --or, if you are on 11g, simply --:new.id := table_seq.nextval; END trg_table_name_set_id;