使用 SQL 开发人员导出并保留主键
Exporting with SQL Developer and keeping primary Key
我正在使用 SQL Developer 访问 oracle 数据库。我想导出 table 并保留主键生成。
由于我不能使用 SQLloader,所以我只能使用 "export to sql"。
举个例子:
Database1 是包含我要复制到另一个数据库 (Database2) 的数据的数据库。 Database1 上的下一条记录将获得主键 200。
Database2 应该从 Database1 获取所有数据(包括主键、外键等)。当我将 table 放在那里并使用 sql 开发人员给我的 sql 重新创建它并创建一个新记录时,它将获得 ID 92(示例 !!)。
这肯定会让我陷入困境。
有没有什么方法可以创建 table 并确保它将获得与 运行 运行 Database1 相同的主键?
可能在您使用序列的情况下,您可以在 table 的触发器之一中找到它。接下来应该像下面这样改变顺序:
DROP SEQUENCE my_seq;
CREATE SEQUENCE my_seq
START WITH 200
MAXVALUE 9999999999999999999
MINVALUE 1
这样你就可以加载数据了。但我认为将 PK 从一个数据库复制到另一个数据库不是一个好主意,因为 PK 对存储级数据敏感,而不是业务数据
我正在使用 SQL Developer 访问 oracle 数据库。我想导出 table 并保留主键生成。 由于我不能使用 SQLloader,所以我只能使用 "export to sql"。
举个例子:
Database1 是包含我要复制到另一个数据库 (Database2) 的数据的数据库。 Database1 上的下一条记录将获得主键 200。
Database2 应该从 Database1 获取所有数据(包括主键、外键等)。当我将 table 放在那里并使用 sql 开发人员给我的 sql 重新创建它并创建一个新记录时,它将获得 ID 92(示例 !!)。
这肯定会让我陷入困境。
有没有什么方法可以创建 table 并确保它将获得与 运行 运行 Database1 相同的主键?
可能在您使用序列的情况下,您可以在 table 的触发器之一中找到它。接下来应该像下面这样改变顺序:
DROP SEQUENCE my_seq;
CREATE SEQUENCE my_seq
START WITH 200
MAXVALUE 9999999999999999999
MINVALUE 1
这样你就可以加载数据了。但我认为将 PK 从一个数据库复制到另一个数据库不是一个好主意,因为 PK 对存储级数据敏感,而不是业务数据