-1

我应该从两个没有任何主键的不同外部文件中插入一个表。

每个外部文件都有不同的列。此外,值应按字母顺序插入。数据库中的表有一个自动递增的主键。

请告诉我实现这一目标的方法。


真的谢谢你的帮助...

这一切都是关于使用外部表插入具有 1:1 或/和 1:n 关系的表...每个表都有一个主键,按顺序递增。我已经插入了“预算”表之一:bu_id、bu_section 等。

insert into Budget (
bu_id,
bu_section
)

select dep.ID_seq.nextval, file1.section
from file1

结果将是:

bu_id   bu_section
1006     blabla
1007     blablabla

我想从两个不同的外部文件中插入具有 de_id、de_resource、de_comment 的(“详细信息”)表。其中一个是资源详细信息,另一个是评论。insert语句也要考虑bu_id和de_id的关系(de_id也要从1006开始)

@a_horse_with_no_name:每个外部文件中有超过 1800 条记录。所以我认为当我在插入表时在每个选择语句中使用 ID_seq.nextval 时它不起作用。

ps:我不允许使用SQL*loader。

4

2 回答 2

1

据我了解您的问题,应该这样做:

insert into real_table (id, col1, col2, col3)
select some_sequence.nextval,
       c1_1,
       c1_2,
       c1_3
from external_table_1
union 
select some_sequence.nextval,
       c2_1,
       c2_2,
       c2_3
from external_table_2;

如果这不是你想要的,你需要让你的问题更清楚。

正如 Randy 指出的那样,您不按字母顺序插入,而是按特定顺序检索行。关系表中的行未排序。ORDER BY从真实表中检索时,您需要提供一个表达式:

select id, 
       col1, 
       col2, 
       col3
from real_table
order by col1;
于 2012-08-01T19:36:37.220 回答
0

没有“外部文件上的主键”之类的东西(假设您正在谈论平面文件)。如果您想将两个“平面文件”而不是“表”加载到一个表中,请开始阅读有关 SQL*Loader 的信息。

如果您想将两个不同的“表”(表 1 和表 2)的内容插入到一个表(表 3)中,答案已经发布。

于 2012-08-01T19:41:33.063 回答