2014-09-13 54 views
0

我在导入数据时使用remap_data选项存在问题。 场景:在oracle中抽取数据

create table test(fname varchar(20), lname varchar(20),fullname varchar(40)); 
insert into test values('govind', 'verma',''); 

错,我忘了插在全名(我拥有庞大的数据,所以让我去为数据抽我无法执行更新操作)我出口使用的expdp的数据,但在加载后,我的数据要在这样重映射功能的方式输入执行使用remap_data选项操作应FNAME和LNAME,但想修改

fullname=concat(fname,':',lname) 

每一行。可能吗 ?

+0

为什么不直接将'fullname'作为一个虚拟列,如果总是将其他两个连接在一起呢? – 2014-09-13 10:49:36

+0

可以用你的表格中正确的语法数据来阐述它吗? – 2014-09-13 10:58:29

回答

1

如果全名是永远姓和名的串联,而不是试图供应和维护手动你可以使用a virtual column来代替:

alter table test drop column fullname; 
alter table test add fullname generated always as (fname||' '||lname); 

select * from test; 

FNAME  LNAME  FULLNAME 
----------- ----------- ------------------ 
govind  verma  govind verma 

SQL Fiddle demo

您不需要更新现有的行或导出/导入;查询时会自动生成虚拟值。根据使用方式的不同,您可能会像添加其他列一样在其上添加索引。