2016-12-14 52 views
0

我有一個Excel文件,其中有一個包含100000(100K)行的employee_ID列, 我有一個Oracle數據庫中有5000000(500萬)行的僱員表,表包含2列:employee_ID和employee_name。如何在Excel文件中從Oracle中檢索值

什麼是添加Employee_name列在Excel文件中的最有效的方法是什麼?

在Excel文件中添加一列:

="SELECT employee_name FROM employee WHERE employee_id = "&A1&" UNION ALL" 

(假設 如果你想迅速做到這一點,但不嘗試自動讀取Excel的值到數據庫,然後預先感謝您

回答

0

員工id從單元格A1開始並沿着行排列)。

然後:

  • 複製粘貼上述式向下對每個包含員工ID的行。
  • 選擇你剛剛爲100,000行生成的SQL並將其複製粘貼到一個文本文件中。
  • 在最後一行用分號;
  • 保存文件替換UNION ALL
  • 運行在SQL/Plus或SQL /開發人員的文件(或另一IDE)和滑閥/輸出重定向到一個文件中。
  • 複製/粘貼從數據庫返回到Excel中生成的數據。
  • 刪除用於生成SQL的列。

爲了保持秩序,你可以使用的值:

="SELECT "&ROW()&" AS rn, employee_name FROM employee WHERE employee_id = "&A1&" UNION ALL" 

之前再加入這一行:

SELECT employee_name FROM (

,並在末尾,將最終UNION ALL有:

) ORDER BY rn; 
+0

謝謝您的回覆,使用這種方法,我確定oracle會保持相同的順序嗎? – JamDak

+0

它應該和你總是可以手動生成一些樣本名稱來檢查它。如果您使用的是並行查詢,那麼它可能會有所不同,並且有些技術可以用來解決這個問題 - 我會在幾個小時內添加更新。 – MT0

+0

更好:'「SELECT EMPLOYEE_ID,EMPLOYEE_NAME FROM EMPLOYEE WHERE EMPLOYEE_ID =」&A1&「UNION ALL」'。這將生成一個包含「EMPLOYEE_ID」和「EMPLOYEE_NAME」的結果集,因此您不必擔心ID和名稱之間的對應關係。然後,只需使用查詢結果替換電子表格中的所有行即可。祝你好運。 –

0

你可以拉5萬條記錄Oracle使用Power Query輕鬆導入Excel(尤其是2013+)。您可能需要從Oracle網站下載一些驅動程序,但在此之後,您的過程將非常簡單。

1)查找出來,如果你需要下載PowerQuery您的Excel

2版)嘗試:新的疑問 - >從數據庫 - >從Oracle數據庫

3)下載所需的驅動程序(如果需要的話)爲Oracle

輸入服務器的詳細信息和憑據,這會爲你設置的連接。如果您不喜歡連接此方法,則可以在PC上設置ODBC數據源並執行相同的步驟,但步驟2看起來不同......

2)新建查詢 - >自其他來源 - >從ODBC

4)研究了一些關於PowerQuery和PowerPivot的。

如果你花時間設置它,你的生活會變得更容易。

+0

感謝您的這個想法,我下載並安裝了Power Query但它只能加載1 048 576行(​​雖然它在右側面板中顯示它裝載了500萬行),如果我找出如何顯示全部500萬行然後我會做一個vlookup,你認爲這是最好的方法?預先感謝您 – JamDak

+0

假設這是您的「數據表」,並且您在「查找表」中有其他一些具有特徵的值,則不應使用VLOOKUP!當您在Excel中使用數據模型時,因爲您在Excel中管理大型數據集的新方式不是使用數百萬個公式,而是通過建立表之間的關係。如果你轉到Excel中的「管理數據模型」,你應該找到你的5MM數據表。現在您需要添加查找表並創建關係。一旦你這樣做,就不需要製作「組合表」,你可以利用這種關係創建出色的數據透視表。 – procpy