2016-05-23 28 views
0

我正在使用SQL Developer来访问oracle数据库。我想导出该表并保持主键的生成。 由于我不能使用SQLloader,我只能使用“导出到SQL”。使用SQL Developer导出并保留主键

下面是一个例子:

数据库1是一个包含我想复制到另一个数据库(的Database2)数据的数据库。 Database1上的下一条记录将获得主键200.

Database2应从Database1获取所有数据(包括主键,外键等等等等)。当我把表放到那里并使用sql开发人员给我的sql重新创建它并创建一个新记录时,它将得到ID 92(示例!!)。

这肯定会引发我的问题。

有什么办法来创建表,并确保它会得到相同的主键,如果它会运行运行Database1?

+0

你的意思是你有一个序列,你不知道如何使它产生更高的数字?无论如何,重新创建序列。 –

+0

我不知道如果我有一个序列 - 我有一个主键在其中的表。有没有办法找出主键的顺序? – Breiti

+0

找到了序列:) – Breiti

回答

1

可能在您使用序列的情况下,您可以在表格中的其中一个触发器中找到它。接下来应该改变如下的序列:

DROP SEQUENCE my_seq; 

CREATE SEQUENCE my_seq 
START WITH 200 
MAXVALUE 9999999999999999999 
MINVALUE 1 

这样,让你加载数据。但我认为从一个数据库复制PK到另一个不是一个好主意,因为PK对存储级别数据敏感,而不是业务数据