从文本文件中读取然后将记录插入到oracle表中

时间:2013-03-20 15:53:13

标签: sql oracle plsql

嗨,我有一个表学生,里面有很少的空字段。 Student#是此表中的主键。我想通过从student表中选择数据,从excel或doc文件填充空字段并插入Officerecord表,将数据插入到Officerecord表中。

Student
=======
Student #   name     Course    age
1            Jess     ENG       19
2            Jane               20
3            Kevin    MAT       19
4            Rob                21

在上表课程中,学生2和学生4缺少数据。我们有一个包含学生#和课程数据的课程文件。我想从文件中读取数据并将此记录插入“Officerecord”表,如下所示:

Officerecord
===========

OFFICE#        STUDENT#           COURSE

在此表中插入数据时,我希望没有行应包含与学生相关的空值。

请帮忙。

3 个答案:

答案 0 :(得分:1)

SQL Developer可以将Excel文件(.xls / .xlsx)直接导入表中,但您需要提前定义表结构。就像右键单击列表中的表,选择导入数据,选择文件,然后将excel列与表列匹配一样简单。

理想情况下,您可以使用外部表格进行导入,但我不相信您可以使用其中一个轻松操作电子表格。

无论如何,一旦加载了两组数据,就可以在Student表上进行简单的更新以填充空值。

UPDATE Student
SET (COURSE) =
( SELECT COURSE
  FROM Officerecord
  WHERE Student.Student# = Officerecord.Student# )
WHERE COURSE IS NULL;

请注意,如果您在一个学生的Officerecord中有两个条目,这将失败,但您的示例并不清楚您希望如何处理这种情况。

答案 1 :(得分:0)

从源数据文件中复制文本并从中创建一个脚本,这是一系列更新语句。

程序员文件编辑器应该在这里帮助你 - 重新调用一个宏,将原始数据转换为表单的状态 update student set course = 'myCourse' where StudentNo = 99 and course is null;

答案 2 :(得分:0)

您可以为office_records文件创建一个外部表,并将此表与学生表连接起来,并进行必要的更改以输入到最终的office_records表。

外部表的优点是您可以在数据更改时替换文件,而无需手动加载文件。

即使用户不具有使用sql developer或Toad从文件中插入记录的访问权限/知识,这也有帮助。