博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据迁移判断非空约束
阅读量:2445 次
发布时间:2019-05-10

本文共 1521 字,大约阅读时间需要 5 分钟。

在数据迁移中,经常会碰到null值的问题,比如在源库中,某些列可能是null值,但是在目标库中,却有非空约束。这样在数据的迁移过程中就会发生问题。
为了更好的对数据的非空问题进行判断,我写了如下的脚本来生成检查的脚本,基本的思路就是生成动态sql,类似 select count(1) from xxx where xxx is null,如果输出结果不为0,说明在源库中存在着非空约束的问题。
脚本需要在目标库中生成,然后在源库执行即可,可以在执行的过程中,考虑加入并行等。
因为非空约束的条件在user_constraints中式long类型卡所以不能做字符串拼接等操作,就当做独立的一列来处理。
sqlplus -s n1/n1 <  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                            ;                                       

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-1232997/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-1232997/

你可能感兴趣的文章
汉语句子的意群和重音_五重音而不是字节-数据存储和检索方法
查看>>
现实增强 工具包 csdn_增强现实:21世纪教育的理想工具
查看>>
tls 1.2加密_椭圆曲线加密在TLS 1.3中的工作方式
查看>>
pvs-stdio ue4_使用PVS-Studio检查GCC 10编译器
查看>>
inter-rat_数字取证技巧和窍门:基于IM的电报RAT-第二部分
查看>>
物联网细分行业_2020年全国互联网细分市场可靠性研究
查看>>
加拿大加密货币交易_加密货币交易-如何制定可持续战略
查看>>
pvs-stdio ue4_使用PVS-Studio检查电报开放网络
查看>>
寻找新
查看>>
PostgreSQL中的WAL:2.预写日志
查看>>
zephyr操作系统_检查Zephyr操作系统代码
查看>>
Node.js VS Python:哪个更好?
查看>>
notebooks_.NET Core与Jupyter Notebooks预览1
查看>>
pvs-stdio ue4_华为云:如今PVS-Studio多云
查看>>
vc编程查找计算机运行记录_如何查找计算机的正常运行时间和安装日期
查看>>
steam无法显示成人内容_如何在Steam上查看仅限成人游戏
查看>>
轻松将图像上传到Photobucket
查看>>
如何在Excel 2007中创建数据透视表
查看>>
如何在iPhone或iPad上启用USB受限模式(适用于iOS 11.4.1)
查看>>
注意:浏览器崩溃的技术支持弹出窗口又回来了
查看>>