2014-10-19 44 views
0

我想這是對問題here問題的擴展。使用SQL Developer中的數據庫文本文件中的數據

但是,我相信鏈接的OP和我自己的使用SQL Developer讀取文件的原因是不同的。我正在學習SQL和數據庫,並試圖創建一個模型數據庫(因爲在插入後我不會編輯數據,只是設置搜索查詢,而不是)。我希望它很大(超過100,000條),所以我創建了一個C++程序,它爲.txt文件中的數據庫隨機生成條目(.txt文件中的每行一個條目),而不是硬編碼插入的每個條目。現在我想要做的是讀取SQL Developer中的.txt文件並將其插入到表中。

我的問題在於我無法創建目錄。我正在使用大學oracle連接,並且我沒有實際製作目錄的權限,因此我可以在鏈接問題中回答我的.txt文件時使用UTL_FILE。假設我沒有辦法獲得這個許可,是否有另一種方法可以完成爲我的表讀取.txt文件的數據?有沒有更好的方法來爲我的數據庫創建「虛擬數據」?

+2

您可以使用'sqlldr'將txt文件導入Oracle數據庫。 'sqlldr'是一個客戶端工具,你不需要任何特殊的權限來使用它(當然除了表中的插入特權)。有許多其他工具可以將txt文件導入數據庫。一個快速的互聯網搜索應該出現幾個 – 2014-10-19 20:30:25

+0

如果你在SQL開發者中有一個DML文件(.txt)和連接就緒,爲什麼不在連接到數據庫之後簡單地在SQL開發者中執行那個文件的內容呢?爲什麼您需要對託管數據庫的遠程計算機文件系統進行寫入訪問? – toddlermenot 2014-10-19 20:35:08

+0

對於sqlldr爲+1。另一種選擇 - 您可以在C++中創建一個SQL腳本(它執行所有必需的DML),並在SQL * Plus(@ filename.sql)中運行它。如果腳本中有很多DML操作,則進行中間提交(也許在每插入100次後)。 – Multisync 2014-10-19 21:34:24

回答

0

我最終做了什麼來插入我的模擬數據改變了.txt文件格式化的方式。我沒有讓C++代碼將每行數據寫入一個條目,而是實際製作了代碼,以便它將.txt代碼寫入.txt文件,正如我認爲@toddlermenot或多或少所暗示的那樣。在我用C++代碼編寫儘可能多的insert-with-mock-entries之後,我只需將它複製/粘貼到SQL開發人員並獲得期望的結果。

我的問題是使過程比需要更復雜的經典案例。

此外,即使我沒有使用該方法,@ Multisync提供了一個有趣的方式來實現我的目標。我不知道SQL有爲我生成模擬數據的工具。感謝您向我介紹這一點。