今天遇到这样一个需求,需要将一个txt的数据文件导入到oracle数据库的两个表中,按理说这个问题很好搞定。
但那时我却破费周折...
先说说如何使用 pl/sql developer 的text importer完成数据导入吧,
打开后你会看到一个这样的界面,(摘自网络):
1.使用PL/SQL Developer的Text Importer
(1)从菜单中选取Text Importer功能。
Tool——>Text Importer(如图1所示)
(2)点击“Text Importer”后显示主窗口(如图2)
(3)设置将数据文件导入到哪个数据库中的哪个表中,如图3所示。如果需要额外插入常量或者sequence,选好相应列以后,可在SQL function中设置相应的常量值或者sequence.nextval值。
(4)设置完成后,点击“Import”按钮,数据开始导入直到数据全部导入到数据库中。
我今天也是这样做的,只是忘记了在倒表的主键时,忘记了在sql function设置相应的sequence.nextval,待数据导入结束后才发现这个问题,又不想重新导入text数据,因为数据量很大,倒一次比较费时。于是就为该表建立一个trigger,然后在update该表数据时,更新该表主键。
trigger 脚本如下:
create or replace trigger XXX_T
before insert or update on XXX
for each row
declare
-- local variables here
begin
select XXX_SEQ.nextval into :new.XXX_ID from dual;
end XXX_T;
如果有兄弟跟我有同样的遭遇,可以看看我的解决方案吧。特此留笔,以标记我的疏忽导致的额外工作。