2013-03-20 145 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

相關問題