在数据库Oracle中捕获输入错误

时间:2017-03-10 00:23:09

标签: database oracle

我们正在将外部excel文件导入我们的SQL数据库,但我们需要使用sql脚本进行一些完整性检查

这是我的示例数据

Row_no   Student_area Student_subject              Code
    1       Science       Science and Tech             ABC
    2      Science        Science and Teck             ABC
    3       Arts          Pschycolgy                   DEF
    4      Arts          Pscycology                   DEF

我需要识别异常

我该怎么做?

干杯

1 个答案:

答案 0 :(得分:0)

Oracle SQL有许多简洁的功能,但它还没有表现出人类风格的智能。因此它无法识别数据中的“异常”。我们必须宣布正确的规则。

在您的情况下,您需要定义一组正确的值,最好是作为参考数据表:

 create table student_area (student_area varchar2(30));
 insert into student_area values ('Science');
 insert into student_area values ('Arts');
 create table student_subject (student_area varchar2(30), 
                                student_subject  varchar2(128),
                                subject_code varchar2(3));
 insert into student_subject values ('Science', 'Science and Tech', 'ABC');
 insert into student_subject values ('Arts', 'Psychology', 'DEF');

现在您已准备好评估文件的内容。最简单的方法是将Excel文件转换为CSV并在其上构建外部表。这是一种特殊类型的表,其中数据驻留在外部OS文件中而不是数据库中。 Find out more

如果您创建一个外部表,其列映射到电子表格中的每一列,您可以识别出这样的异常:

select * from external_table ext
where ext.student_area not in ( select s.student_area
                                from student_area s )
/

select * from external_table ext
where (ext.student_area, ext.student_subject) not in 
                  ( select s.student_area, s.student_subject
                                from student_subject s )
/