我使用Oracle SQL Developer作为.sql文件从一个数据库导出了一个表,并希望将其导入另一个具有完全相同表的数据库,但问题是某些条目出现在两个表中。
使用Oracle SQL Developer导入时是否有办法排除目标表中已存在的条目?
答案 0 :(得分:0)
至少有两种方式:
让我们使用这个文件:
data.sql
insert into test_table (id) values (1);
insert into test_table (id) values (1);
insert into test_table (id) values (2);
insert into test_table (id) values (2);
insert into test_table (id) values (2);
insert into test_table (id) values (3);
insert into test_table (id) values (3);
SQLLDR: 首先,为表创建完整性约束,例如:
SQL> create table test_table (
2 id number(10) primary key
3 );
Table created.
然后创建一个控制文件:
LOAD DATA
INFILE data.sql
INTO TABLE test_table
(
id position(37:37)
)
跑步后你会看到:
SQL> select * from test_table;
ID
----------
1
2
3
坏文件(由于完整性违规,此行被拒绝):
data.bad
insert into test_table (id) values (1);
insert into test_table (id) values (2);
insert into test_table (id) values (2);
insert into test_table (id) values (3);
您可以使用此控制文件生成外部表格,因此我不会向您展示如何使用它。
加载并删除重复项:
让我们重新创建test_table
表:
SQL> create table test_table (
2 id number(10)
3 );
Table created.
使用SQL Developer加载您的sql文件并检查内容:
SQL> select * from test_table;
ID
----------
1
1
2
2
2
3
3
7 rows selected.
然后删除重复项:
SQL> delete test_table where rowid not in (select min(rowid) from test_table group by id);
4 rows deleted.
SQL> select * from test_table;
ID
----------
1
2
3
我相信有更多方法可以完成你的任务,我只展示了我脑海里的方法。