jk's notes
  • Oracle导入数据的注记

Oracle导入数据的注记

思路适用于其他数据库

在导入数据等操作过程中, 因为建立约束, 会是的导入数据等操作非常繁琐 (顺序问题). 特别是表很多的时候, 各个表之间的依赖直接决定了数据的导入顺序.

这里可以考虑禁用约束, 然后再导入数据, 再开启约束.

可以将其写成存储过程来生成 sql 脚本.

这里以 Oracle 为例:

  1. 查询元数据表, 查看有哪些约束.
  2. 修改表, 禁用约束.
  3. 插入数据.
  4. 修改表, 启用约束.
-- 查找外键约束名
SELECT constraint_name FROM user_constraints 
WHERE r_constraint_name IN (
  SELECT constraint_name FROM user_constraints 
  WHERE table_name = '主表名' AND constraint_type = 'P'
); -- 这里可以使用 LIKE 来查询多个表的约束

-- 禁用外键约束
ALTER TABLE 子表名 DISABLE CONSTRAINT 外键约束名;

-- 执行插入等操作

-- 重新启用外键约束
ALTER TABLE 子表名 ENABLE CONSTRAINT 外键约束名;
Last Updated:
Contributors: jk