В MySQL, LOAD_FILE()
функцията чете файл и връща съдържанието му като низ.
Синтаксис
Синтаксисът е така:
LOAD_FILE(file_name)
Където file_name
е пълният път до файла.
Пример
Ето пример, в който избирам съдържанието от файл:
SELECT LOAD_FILE('/data/test.txt') AS Result;
Резултат:
+------------------------------------------+ | Result | +------------------------------------------+ | This text is all that the file contains! | +------------------------------------------+
Пример за база данни
Ето пример за това как може да изглежда една заявка при вмъкване на съдържанието на файла в база данни:
INSERT INTO MyTable (FileId, UserId, MyBlobColumn) VALUES (1, 20, LOAD_FILE('/data/test.txt'));
В този случай колоната MyBlobColumn
има тип данни BLOB (което му позволява да съхранява двоични данни).
И сега, когато е в базата данни, можем да го изберем:
SELECT MyBlobColumn FROM MyTable WHERE UserId = 20;
Резултат:
+------------------------------------------+ | MyBlobColumn | +------------------------------------------+ | This text is all that the file contains! | +------------------------------------------+
Ако файлът не съществува
Ако файлът не съществува, NULL се връща:
SELECT LOAD_FILE('/data/oops.txt') AS Result;
Резултат:
+--------+ | Result | +--------+ | NULL | +--------+
Още причини, поради които може да получите NULL
Ще получите също NULL едно от следните условия не е изпълнено:
- Файлът трябва да се намира на хоста на сървъра.
- Трябва да имате
FILE
привилегия, за да прочетете файла. Потребител, който имаFILE
privilege може да чете всеки файл на хоста на сървъра, който е четим или четим от MySQL сървъра. - Файлът трябва да бъде четим от всички и размерът му е по-малък от
max_allowed_packet
байтове. Ето как можете да проверите това:SHOW VARIABLES LIKE 'max_allowed_packet';
Моят резултат:
+--------------------+----------+ | Variable_name | Value | +--------------------+----------+ | max_allowed_packet | 67108864 | +--------------------+----------+
- Ако
secure_file_priv
системната променлива е зададена на непразно име на директория, файлът, който трябва да се зареди, трябва да се намира в тази директория. Ето как можете да проверите, че:SHOW VARIABLES LIKE 'secure_file_priv';
Моят резултат:
+------------------+--------+ | Variable_name | Value | +------------------+--------+ | secure_file_priv | /data/ | +------------------+--------+
В този пример мога да чета файлове само от /data/ указател.