2013-03-20 97 views
0

嗨,我有一个表中的学生,其中有几个空字段。学生#是此表中的主键。我想通过从学生表中选择数据,从excel或doc文件填充空字段并插入到Officerecord表中,将数据插入到表Officerecord中。从文本文件读取,然后插入记录到oracle表

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 

虽然在这个表中插入数据,我想没有行应该包含有关学生空值。

请帮忙。

+0

“课程文件”在哪里?这是数据库服务器上的平面文件吗?或者在某些客户机上?你能否将这个文件中的数据加载到一个新表中,然后将数据合并到你的'student'表中? – 2013-03-20 15:56:33

+0

这是我桌面上的文字文件。不,我不能将文件加载到表中。 – user2171679 2013-03-20 17:16:11

+1

你的字面意思是一个Word文件(不是文本文件,而是Microsoft Word专有格式的二进制文件)?你可以将它保存为文本文件吗?你能把文件移动到数据库服务器吗? PL/SQL在数据库服务器上运行,因此它只能访问数据库服务器上的资源。如果无法将数据加载到表中并且无法将文件移动到数据库服务器,则无法使用PL/SQL读取它。您可以编写一个可在您的桌面上运行的应用程序,该应用程序将读取该文件,连接到数据库并更新表格。但是这不在PL/SQL中。 – 2013-03-20 17:20:25

回答

0

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

一个程序员文件编辑器应该帮助你在这里 - recortd,轮流在原始数据的形式statments update student set course = 'myCourse' where StudentNo = 99 and course is null;

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的两个项目一个学生,这将失败,但你的例子是不是你希望如何处理这样的情况不清楚。

+0

下面是步骤:在SQL Developer或SQL中创建一个新表,在SQL Developer中右击该表,选择导入数据选项,然后您会看到许多不同的格式,可用于从文件中将数据导出到表中。 – Art 2013-03-20 18:21:15

相关问题