2015-10-29 21 views
1

我得到了約6000行的Excel文件,我需要寫一個腳本從它更新一個Oracle表,查詢很簡單:寫作從Excel的腳本文件

="update table set phone_number = "&B2&" where entityid = "&D2&";" 

我的問題是關於腳本本身,從這個大小的文件中編寫腳本的標準做法是什麼?我是否期望用6000個更新語句編寫一個.sql文件?或者通過將文件轉換爲.csv或其他方法導入到oracle中更好?

+0

我不能直接回答這個問題,因爲這個語法會有點不同,但剛纔不得不做同樣的事情在SQL服務器和基本思路是導入Excel文件到一個新表,然後設置一個查詢將其連接到現有表(內部連接),然後僅更新匹配的記錄。 –

+0

我想說,你需要編寫一個腳本,將會拋出你的xls中的所有行,並更新表(它看起來只是一個更新stamements與foreach循環內的參數)。它可以是性能問題,如果你有十萬條記錄百,但對於6000,我想簡單的解決辦法應該是確定 – are

+0

OK @是 - 你說的是做一個SELECT * FROM OPENROWSET – rtd353

回答

0

你可以在SQL開發輕鬆地做到這一點。

  1. 在左側窗格中展開連接
  2. 展開
  3. 右擊在桌子上,並選擇導入數據

enter image description here

  • 它將打開數據導入嚮導
  • 選擇您的文件並在導入開始之前執行幾個步驟。
  • 如果你有CSV文件,其他的選項有:

    • SQL裝載機(客戶端)
    • 外部表(服務器端)。

    但是,如果你不熟悉的其他選項,然後基於的SQL Developer的導入選項,輕鬆GUI去。

    +0

    我正在將此轉化爲生產,並且無法訪問gui,有沒有辦法從服務器端執行此操作? – rtd353

    +0

    你可以創建pl/sql程序來解析xls並進行更新。請參閱此處的示例:http://www.dba-oracle.com/t_load_excel_spreadsheet_into_oracle_table.htm – are

    +0

    @ rtd353在服務器上,您可以**創建外部表**,將excel轉換爲csv,然後使用文件位置插入數據輸入到外部表中。一旦在外部表中有數據,就可以像在普通表上一樣發出直接的SQL來將數據移動到生產表中。 –