--1创建临时存储元数据的表
CREATE OR REPLACE PROCEDURE create_temp_table
AS
v_crtable varchar2(32767):=Q'[CREATE TABLE temp_meta (metadata VARCHAR2(4000))]';
BEGIN
EXECUTE IMMEDIATE v_crtable;
END create_temp_table;
--2存储过程实现删除用户表约束为Load数据作准备
CREATE OR REPLACE PROCEDURE drop_user_constraints(p_table_name varchar2)
AS
v_object_name varchar2(50);
v_object_type varchar2(50);
v_drop_stmt varchar2(32767);
v_alter_stmt varchar2(32767):=Q'[ALTER TABLE ]';
TYPE cur IS REF CURSOR;
meta_cur cur;
BEGIN
--通过忽略创建脚本的存储参数来减少元数据长度
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
--获取所创建的约束元数据
OPEN meta_cur FOR SELECT uc.constraint_type,uc.constraint_name
FROM user_constraints uc
WHERE uc.table_name = UPPER(p_table_name)
AND uc.constraint_type <> 'C';
LOOP
FETCH meta_cur INTO v_object_type,v_object_name;
EXIT WHEN meta_cur%NOTFOUND;
v_alter_stmt := v_alter_stmt||p_table_name
||Q'[ DISABLE CONSTRAINT ]'
||v_object_name;
EXECUTE IMMEDIATE v_alter_stmt;
v_alter_stmt := Q'[ALTER TABLE ]';
END LOOP;
--获取所创建的索引的元数据
OPEN meta_cur FOR SELECT ui.index_type,ui.index_name
FROM user_indexes ui
WHERE ui.table_name = UPPER(p_table_name);
LOOP
FETCH meta_cur INTO v_object_type,v_object_name;
EXIT WHEN meta_cur%NOTFOUND;
--将元数据插入到临时表中保存
INSERT INTO temp_meta
SELECT to_char(dbms_metadata.get_ddl('INDEX',v_object_name)) FROM dual;
--动态SQL删除原表上的索引
v_drop_stmt := Q'[DROP INDEX ]'||v_object_name;
EXECUTE IMMEDIATE v_drop_stmt;
END LOOP;
END drop_user_constraints;
--3创建存储过程回复原表约束
CREATE OR REPLACE PROCEDURE recovery_user_constrains(p_table_name varchar2)
AS
v_create_sql varchar2(32767);
v_object_name varchar2(50);
v_alter_sql varchar2(32767);
TYPE cur IS REF CURSOR;
con_cur cur;
BEGIN
--重创建的索引
OPEN con_cur FOR SELECT tm.metadata FROM temp_meta tm;
LOOP
FETCH con_cur INTO v_create_sql;
EXIT WHEN con_cur%NOTFOUND;
EXECUTE IMMEDIATE v_create_sql;
END LOOP;
--启用所有约束
OPEN con_cur FOR SELECT uc.constraint_name FROM user_constraints uc
WHERE uc.table_name = UPPER(p_table_name)
AND uc.status = 'DISABLED';
LOOP
FETCH con_cur INTO v_object_name;
EXIT WHEN con_cur%NOTFOUND;
v_alter_sql := Q'[ALTER TABLE ]' || p_table_name
|| Q'[ ENABLE CONSTRAINT ]'
|| v_object_name;
EXECUTE IMMEDIATE v_alter_sql;
END LOOP;
END recovery_user_constrains;
分享到:
相关推荐
总之,从事务性数据到数据仓库的数据抽取是一个涉及多个层面的过程,包括数据分类、抽取策略、数据库设计约束以及ETL流程优化。理解这些知识点有助于构建高效、准确的数据仓库系统,为业务分析和决策提供强有力的...
本文将深入探讨MySQL中删除重复记录的方法,以及如何利用其特性来优化数据管理流程。 ### MySQL删除重复记录 在MySQL中,重复记录可能由于各种原因而出现,比如数据导入错误、系统故障或人为操作失误等。这些重复...
1. **数据源分析**:理解源数据的结构和特性,为后续步骤做准备。 2. **概要设计和详细设计**:规划ETL流程,包括抽取、转换和装载的具体步骤。 3. **测试**:验证ETL流程的正确性和性能,确保数据的准确无误。 **...
2. 创建MySQL表:在MySQL中创建一个与Excel表格结构相匹配的表。定义好字段名、数据类型(如INT、VARCHAR、DATE等)和约束(如主键、外键等)。如果Excel中的数据已经按照数据库规范组织,这一步可以省略。 3. 导出...
- 视图:虚拟表,基于一个或多个表的查询结果,提供了一种简化查询和数据抽象的方式。 - 事务:确保数据一致性的重要机制,包括ACID(原子性、一致性、隔离性、持久性)属性。 了解并熟练掌握这些知识点,将有助...
8. 持续的数据质量管理:数据质量不仅仅是单次的清洗任务,它要求有一个持续的数据质量管理流程。这个流程可能包括定期的审核、监控数据质量指标以及持续改进数据处理过程。 总之,本文档中提及的“kimball DQ ...
实体完整性是指每个表都有一个主键,确保数据的唯一性;参照完整性规定了表间关联,通过外键约束防止非法数据插入;用户自定义完整性则是根据业务需求设定的特定规则。 2. 字段定义:字段的属性包括数据类型(如...
假设存在一个源数据库表`customers`,包含`id`、`firstname`、`lastname`、`age`字段,以及一个默认值为系统当前时间的时间戳字段`updatedate`。转换后的表结构类似:`id`、`firstname`、`lastname`、`age`、`...
5. 最后,运行"drop all objects.sql"以清除数据库,为新的实验或学习阶段做准备。 通过这样的实战练习,你可以深入理解SQL Server的工作原理,熟悉数据库设计原则,为今后在真实环境中处理复杂数据问题打下坚实...
5. **数据库设计**:包括表结构的设计、关系的建立以及数据完整性约束,这些都直接影响到CRUD操作的实现。 6. **用户验证和授权**:为了确保只有授权用户能进行修改、添加、删除操作,网站通常会包含身份验证和授权...
每个数据表的设计应包含主键和外键约束,以确保数据的关联性和完整性。 综上所述,基于ASP.NET的图书管理系统是一个综合运用了Web开发技术、数据库设计和管理、身份验证和权限控制等多个领域的项目。开发者需要掌握...
2. 数据结构与数据模型:数据结构、数据操作和数据完整性约束构成了逻辑模型,它是数据库设计中的一个重要组成部分。 3. Visual FoxPro 程序编写:在该编程环境中,如果一行语句太长需要换行,可以继续输入,无需敲...
- **update不能用一个表中的记录为条件修改另一个表中的记录**:在DB2中,直接基于一个表的数据修改另一个表的操作受到限制。 - **如果显示调用存储过程时传null值要注意**:在调用存储过程时,如果参数为`NULL`,则...
- 在数据库中,表是实际存储数据的地方,而视图则是一个虚拟表,它根据某个SQL查询的结果动态生成。视图本身并不存储数据,只是作为一个查询的抽象表示。虽然可以在视图上创建索引,但这通常受到一定的限制,因为...
自增主键(AUTO_INCREMENT)是一个特殊类型的列,它的值自动递增,常用于标识表中的唯一记录。 自定义变量在复杂的查询中很有用,可以保存中间结果或控制流程。例如,用户可以声明和初始化变量,然后在查询中多次...
- **接口与实现**: Java中虽然限制了一个类只能继承一个父类,但一个类可以实现多个接口。接口是一种完全抽象的类,只包含常量和抽象方法。 - **接口继承**: 接口之间支持多重继承,即一个接口可以继承多个其他接口...
Integration Services(SSIS)是一个ETL(Extract, Transform, Load)工具,用于数据迁移、清洗和转换,支持复杂的业务逻辑和数据处理流程。 九、性能优化 SQL Server 2005提供了性能监控和优化工具,如查询分析器...
- **3.3.10 取得一个表的行数**:通常使用COUNT(*)函数来统计表中的行数。 **3.4 DCL—数据控制语言** - **3.4.1 GRANT**:授予用户权限。 - **3.4.2 REVOKE**:收回用户权限。 - **3.4.3 COMMIT**:提交事务。 - *...