我有一个包含103列和超过100,000条记录的表。有人告诉我,Oracle数据库在少数列(四列)和少数记录(约20,000条记录)中都有错误数据,并被告知要修改数据。我还给了一个查询,我应该修改数据(坏数据)。在查询的帮助下,我将所有错误数据导出到excel并使用宏进行修改。
如何将Oracle数据库中现有的错误数据替换为excel中的数据(良好的数据)。是否可以使用SQL查询修改数据库某些部分的数据?我的意思是说103列中的4列和100k记录中的20k必须在不影响Oracle数据库中已有的良好数据的情况下进行修改。
我正在使用SQL开发人员和Oracle 11g
我的查询检索错误数据
select e.id_number
, e.gender_code
, e.pref_mail_name
, e.prefix
,e.first_name
,e.last_name
,e.spouse_name
,e.spouse_id_number
,e.pref_jnt_mail_name1
,e.pref_jnt_mail_name2
from advance.entity e
where e.person_or_org = 'P'
and ascii(e.spouse_name) <> 32
or ascii(e.spouse_id_number) <> 32"
注意:此外,我不会更改任何主键或辅助键数据。其他列中包含错误数据。
答案 0 :(得分:0)
您可以先将所有更正后的数据(现在位于Excel文件中)导入临时表。有关详细信息,请参阅Load Excel data sheet to Oracle database。
编写一个或多个UPDATE
statements应该是一项简单的任务。如果您不熟悉Oracle语法Tech on the Net has some nice examples。
此外,在进行任何更改之前,请不要忘记将原始表备份到临时表。这样,如果你弄乱数据修复,你可以重新开始。