Oracle导入数据的注记
思路适用于其他数据库
在导入数据等操作过程中, 因为建立约束, 会是的导入数据等操作非常繁琐 (顺序问题). 特别是表很多的时候, 各个表之间的依赖直接决定了数据的导入顺序.
这里可以考虑禁用约束, 然后再导入数据, 再开启约束.
可以将其写成存储过程来生成
sql
脚本.
这里以 Oracle 为例:
- 查询元数据表, 查看有哪些约束.
- 修改表, 禁用约束.
- 插入数据.
- 修改表, 启用约束.
-- 查找外键约束名
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 外键约束名;