Sql 将数据从一个表复制到全部为外键的新表

Sql 将数据从一个表复制到全部为外键的新表,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个超过50万行和四列的表格 这些列可以称为col1、col2、col3和col4 此主表中的每一列都是一个varchar2,并且有冗余数据 我将此表转换为所有外键。因此,我为每列创建了4个表。Col1_表、Col2_表、Col3_表和Col4_表。最后是一个新的主表,它与原始主表相似,只是代替了varchar2s。我使用数字并创建了外键约束 各表如下: --OriginalMasterTable Col1 VarChar2 Col2 VarChar2 Col3 VarChar2 C

我有一个超过50万行和四列的表格

这些列可以称为col1、col2、col3和col4

此主表中的每一列都是一个varchar2,并且有冗余数据

我将此表转换为所有外键。因此,我为每列创建了4个表。Col1_表、Col2_表、Col3_表和Col4_表。最后是一个新的主表,它与原始主表相似,只是代替了varchar2s。我使用数字并创建了外键约束

各表如下:

--OriginalMasterTable

Col1 VarChar2

Col2 VarChar2

Col3 VarChar2

Col4 VarChar2




--Col1_Table, Col2_Table, Col3_Table, Col4_Table

ID - Number

Name - VarChar2

--NewMasterTable

Col1_ID Number

Col2_ID Number

Col3_ID Number

Col4_ID Number
col1、2、3和4表具有原始主表的原始数据和新ID

我想将原始主表复制到新的主表中,但是使用col1、2、3和4表中的外键


我如何使用SQL或PL/SQL来实现这一点?

您可以使用连接,但在字符字段上。假设定义了所有字段,则可以使用内部联接:

select c1.id as col1_id, c2.id as col2_id, c3.id as col3_id, c4.id as col4_id
from originalmastertable omt join
     col1_table c1
     on omt.col1 = c1.name join
     col2_table c2
     on omt.col2 = c2.name join
     col3_table c3
     on omt_col3 = c3.name join
     col4_rable c4
     on omt_col4 = c4.name;
然后可以将结果放入新表中