MySQL - LOAD_FILE() 函式



MySQL 的LOAD_FILE() 函式接收一個表示檔案路徑的字串值,讀取其內容並將其返回。檔案路徑應為絕對路徑,並且執行查詢的使用者應具有讀取檔案的必要檔案系統許可權。如果我們提供影像,它將以 blob 的形式返回輸出。

語法

以下是 MySQL LOAD_FILE 函式的語法:

LOAD_FILE(file_name)

引數

此函式以檔案路徑作為引數。

返回值

此函式將檔案內容作為字串返回。

示例

在以下示例中,我們使用 LOAD_FILE() 函式從絕對檔案路徑讀取文字檔案 'test.txt' 的內容並將其作為十六進位制字串返回:

SELECT LOAD_FILE('MySQL_data_directory/test.txt') as Result;

以下是上述程式碼的輸出:

結果
0x5468697320697320612066696C6520776974682073616D706C652064617461

如果停用--binary-as-hex設定,則上述查詢的結果將返回檔案的實際文字內容:

SELECT LOAD_FILE('MySQL_data_directory/test.txt') as Result;

獲得的輸出如下:

結果
這是一個包含示例資料的檔案

示例

如果傳遞給 LOAD_FILE() 函式的檔案路徑不存在,則它返回 NULL:

SELECT LOAD_FILE('UnknownPath/java.jpg');

我們獲得以下輸出:

LOAD_FILE('UnknownPath/java.jpg')
NULL

示例

您還可以將表的列名作為此函式的引數傳遞,並將檔案內容載入為指定列的值。

假設我們使用 CREATE 語句建立了一個名為“Tutorials_table”的表,並在其中插入了記錄,但“Contents”列除外:

CREATE TABLE Tutorials_table (
   ID INT, 
   Title VARCHAR(20), 
   Contents LONGTEXT
);

現在,讓我們使用 INSERT 語句向其中插入記錄:

INSERT INTO Tutorials_table (ID, Title) VALUES 
(1, 'Java'),
(2, 'JavaFX'),
(3, 'Coffee Script'),
(4, 'OpenCV');

假設我們在 MySQL 資料目錄中(即C:\ProgramData\MySQL\MySQL Server 8.0\Uploads)有 4 個文字檔案:

java.txt

Java is a high-level programming language originally developed by Sun Microsystems and released in 1995. Java runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.

Javafx.txt

JavaFX is a Java library used to build Rich Internet Applications. The applications written using this library can run consistently across multiple platforms. The applications developed using JavaFX can run on various devices such as Desktop Computers, Mobile Phones, TVs, Tablets, etc.

coffee.txt

CoffeeScript is a light weight language which transcompiles into JavaScript. It provides better syntax avoiding the quirky parts of JavaScript, still retaining the flexibility and beauty of the language.

opencv.txt

OpenCV is a cross-platform library using which we can develop real-time computer vision applications. It mainly focuses on image processing, video capture and analysis including features like face detection and object detection. 

現在,讓我們將上述文字檔案的內容作為“Tutorials_table”表中“Contents”列的值載入:

UPDATE Tutorials_table SET Contents = LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/java.txt') WHERE ID=1;
UPDATE Tutorials_table SET Contents = LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/javafx.txt') WHERE ID=2;
UPDATE Tutorials_table SET Contents = LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/coffee.txt') WHERE ID=3;
UPDATE Tutorials_table SET Contents = LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/opencv.txt') WHERE ID=4;

您可以使用以下 SELECT 查詢驗證表的內容:

SELECT * FROM Tutorials_table;

您可以觀察到如下表中插入的資料:

ID 標題 內容
1 Java Java 是一種高階程式語言,最初由 Sun Microsystems 開發並於 1995 年釋出。Java 可以在各種平臺上執行,例如 Windows、Mac OS 和各種版本的 UNIX。
2 JavaFX JavaFX 是一個用於構建富網際網路應用程式的 Java 庫。使用此庫編寫的應用程式可以在多個平臺上一致執行。使用 JavaFX 開發的應用程式可以在各種裝置上執行,例如臺式電腦、手機、電視、平板電腦等。
3 Coffee Script CoffeeScript 是一種輕量級語言,可以編譯成 JavaScript。它提供了更好的語法,避免了 JavaScript 中一些古怪的部分,同時保留了語言的靈活性和美觀性。
4 OpenCV OpenCV 是一個跨平臺庫,使用它我們可以開發即時計算機視覺應用程式。它主要專注於影像處理、影片捕獲和分析,包括人臉檢測和物體檢測等功能。
mysql-load-file-function.htm
廣告