前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据迁移判断非空约束(r2笔记45天)

数据迁移判断非空约束(r2笔记45天)

作者头像
jeanron100
发布2018-03-14 15:43:19
7290
发布2018-03-14 15:43:19
举报

在数据迁移中,经常会碰到null值的问题,比如在源库中,某些列可能是null值,但是在目标库中,却有非空约束。这样在数据的迁移过程中就会发生问题。 为了更好的对数据的非空问题进行判断,我写了如下的脚本来生成检查的脚本,基本的思路就是生成动态sql,类似 select count(1) from xxx where xxx is null,如果输出结果不为0,说明在源库中存在着非空约束的问题。 脚本需要在目标库中生成,然后在源库执行即可,可以在执行的过程中,考虑加入并行等。 因为非空约束的条件在user_constraints中式long类型卡所以不能做字符串拼接等操作,就当做独立的一列来处理。 sqlplus -s n1/n1 <<EOF set linesize 150 set feedback off set pages 0 col search_pre format a58 col search_condition format a50 spool not_null_constraint_$1.sql_tmp select /*+rule*/ 'select count(1) from ' || table_name || ' where ' search_pre, search_condition, ';' from user_constraints where table_name =upper( '$1') and constraint_type = 'C' and constraint_name in (select constraint_name from user_cons_columns where table_name = upper('$1') and column_name in (select column_name from user_tab_cols where table_name =upper( '$1') and nullable = 'N')); spool off; EOF sed 's/ NOT / /g' not_null_constraint_$1.sql_tmp > not_null_constraint_$1.sql rm not_null_constraint_$1.sql_tmp exit 比如对于表T来说,object_id,object_name含有非空约束。 SQL> desc t Name Null? Type ----------------------------------------- -------- ---------------------------- ID NUMBER OBJECT_ID NOT NULL NUMBER OBJECT_NAME NOT NULL VARCHAR2(30) OBJECT_TYPE VARCHAR2(19) CLOB_TEST CLOB 运行脚本后,生成的sql脚本内容如下所示,达到了预期的目标。 select count(1) from T where "OBJECT_NAME" IS NULL ; select count(1) from T where "OBJECT_ID" IS NULL ;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档