Oracle用一个表的列更新另一个表对应记录的列

来源:互联网 发布:原单男装 淘宝店铺 编辑:程序博客网 时间:2024/05/16 17:39

之前在项目中导入基础数据时,因为代码写的不够完善,导致一些列的数据没有正确导入,在系统中重新导入所有基础数据又太麻烦,所以想到把没导入数据库的列单独放入EXCEL中,通过PL\SQL导入到数据库中,并通过一个表的列去更新另一个表对应的列。

一、在oracle数据库中建立一个临时表,我的叫CELL_ANGLE,其表结构如图:

二、准备导入的数据,excel版本为2007,文件名为angle.xls,存放位置在D:\PLSQL\

第一行与数据库的列名一一对应,以下为要导入的数据,导入数据要符合表的完整性定义

三、使用PL\SQL的工具,Tools下面的ODBC Importer工具,在ODBC Importer的用户/系统 DSN中选择Excel Files,在用户名中输入要导入表所属的用户名,密码中输入登录密码,本例中数据库用户名为cmms,之后点击连接按钮。
四、点击连接按钮后,会弹出“选择工作薄”对话框,通过“驱动器”选择文件存放的位置,本例angle.xls放在D:\PLSQL\,在“文件类型”中选择Excel文件(*.xls),在“文件类型”上方的空表框中选择要导入的文件,点击该文件后,在数据库名中会显示要导入的文件名,本例中为angle.xls,选择完成后点击“确定”按钮。
五、点击确定按钮后,在接下来弹出的对话框“表/查询”中选择“导入表”,本例中数据放在Excel表的Sheet1$中,点击“'D:\PLSQL9\angle.xls’.'Sheet1$'”,在结果预览中会显示要导入的数据
六、点击“到oracle的数据”设置oracle相关的设置
在“所有者”中选择angle表的所有者,本例中所有者是cmms;在“表”中选择angle表,在字段中选择excel表和angle表中对应的列名,在“字段类型”中选择对应列的数据类型
七、选择完成后,点击“导入”按钮,系统会显示导入的数据数量和时间;至此,数据就导入完成,那如何用这些数据去更新其他表中对应列的数据呢?
八、用一个表的列更新另一个表对应记录的列:update base_station t set t.high_way=(select a.high_way from angle a where t.bsc=a.bsc and t.btsid=a.btsid and t.city_id=a.city_id ) ;可总是不成功,看了看提示:“单行子查询返回多于一个行”。原来是两个表的记录并不是一对一的关系,一个表中的记录数大于另一个表,即不关联的记录,所以才会失败。按照提示,查询条件中加上“rownum < 2 ”,成功。

 

原创粉丝点击