2013-10-21 30 views
0

我可以INSERT一行到SQL這樣的:插入SQL中的單行,但是從文件加載內容

INSERT INTO MyTable VALUES (0, 'This is some text...'); 

但是,如果我想這是一些文本...到是C:\SomeFile.txt的內容。 Oracle中有沒有一種方法可以實現這一點?

我通過Doc挖掘了一下,發現了LOAD FILE方法,但它似乎是批量加載數據。例如,它想要一個FIELDS TERMINATED BY參數,而不是。我想簡單地插入一行,並通過本地磁盤上的文件內容設置一列。

+0

用PHP(或其他)讀取文件,並快速創建INSERT語句。 – 2013-10-21 22:00:09

+0

@MikeW - 是的,我只有一個文件,所以我寧可不寫一個完整的程序,但這可能是最後的手段。 –

+1

沒有純粹的SQL解決方案(a和'LOAD FILE'是**不是** Oracle SQL語句,所以我不知道您在哪些文檔中找到了這一點)。某些SQL客戶端提供專有擴展來執行此類操作,雖然 –

回答

1

您不應該從DATABASE SERVER的文件系統讀取文件以插入到數據庫中。

你爲什麼要這樣做?您確實應該在應用程序代碼中讀取該文件,然後通過標準SQL插入字符串或二進制數據。

如果您確實需要這樣做,您需要使用oracle UTL_FILE函數。並寫一些PL/SQL存儲在一個變量中,然後插入。

+0

我們有一些目前在文件系統上的HTML模板,但我們希望將它們移到數據庫中。最終(當我們有時間的時候),會有一個管理功能來編輯這些模板,但現在我只想獲取數據庫中的數據。所以這是一次性的事情。 –

+0

如果數據庫服務器與Web服務器和文件存儲位於同一臺計算機上,那麼這很有意義。當然如果數據庫是一個單獨的服務器,這將會失敗。聽起來像一個快速perl腳本可能是最簡單的方法,否則你堅持做'UTL_FILE。GET_RAW'在一個循環中。 –

+0

我最終只是使用Visual Studio Debugger窗口來做到這一點,因爲無論如何,所有東西都是用ORM映射的。很簡單。 –

1

我第一次回答問題,請原諒我。

如果你使用PHP(你很可能不會,但是這是我所知道的),那麼你可以做這樣的事情:

文件:「importantfile.php」

$variable 1 = "0"; 
$variable 2 = "This is some text..."; 

文件插入文本: 「的index.php」

require "importantfile.php"; 
$query = mysql_query("INSERT INTO MyTable VALUES ('$variable1', '$variable2')"); 

我希望這有助於你以某種方式:)

+0

謝謝,我正在尋找一個純粹的SQL方式來做到這一點。是的,我可以編寫一個快速的C#或Python程序來做到這一點,但我認爲可能有一些更簡單的方法。 –

1

要做到這我認爲你將不得不使用PL/SQL。這在技術上是一個「高級SQL」。 搜索關於PL/SQL的一些信息。您可以將您的SQL直接複製到PL/SQL中並使用相同的數據庫。

相關問題