I MySQL er LOAD_FILE()
funktionen læser en fil og returnerer dens indhold som en streng.
Syntaks
Syntaksen ser sådan ud:
LOAD_FILE(file_name)
Hvor file_name
er den fulde sti til filen.
Eksempel
Her er et eksempel, hvor jeg vælger indholdet fra en fil:
SELECT LOAD_FILE('/data/test.txt') AS Result;
Resultat:
+------------------------------------------+ | Result | +------------------------------------------+ | This text is all that the file contains! | +------------------------------------------+
Et databaseeksempel
Her er et eksempel på, hvordan en forespørgsel kan se ud, når du indsætter indholdet af filen i en database:
INSERT INTO MyTable (FileId, UserId, MyBlobColumn) VALUES (1, 20, LOAD_FILE('/data/test.txt'));
I dette tilfælde er kolonnen MyBlobColumn
har en datatype BLOB (som gør det muligt at gemme binære data).
Og nu hvor det er i databasen, kan vi vælge det:
SELECT MyBlobColumn FROM MyTable WHERE UserId = 20;
Resultat:
+------------------------------------------+ | MyBlobColumn | +------------------------------------------+ | This text is all that the file contains! | +------------------------------------------+
Hvis filen ikke findes
Hvis filen ikke eksisterer, NULL returneres:
SELECT LOAD_FILE('/data/oops.txt') AS Result;
Resultat:
+--------+ | Result | +--------+ | NULL | +--------+
Flere grunde til, at du muligvis bliver NULL
Du får også NULL en af følgende betingelser er ikke opfyldt:
- Filen skal være placeret på serverværten.
- Du skal have
FILE
privilegium for at læse filen. En bruger, der harFILE
privilegium kan læse enhver fil på serverværten, der enten er verdenslæsbar eller læsbar af MySQL-serveren. - Filen skal kunne læses af alle og dens størrelse skal være mindre end
max_allowed_packet
bytes. Sådan kan du kontrollere, at:SHOW VARIABLES LIKE 'max_allowed_packet';
Mit resultat:
+--------------------+----------+ | Variable_name | Value | +--------------------+----------+ | max_allowed_packet | 67108864 | +--------------------+----------+
- Hvis
secure_file_priv
systemvariablen er indstillet til et ikke-tomt biblioteksnavn, den fil, der skal indlæses, skal være placeret i den mappe.Sådan kan du kontrollere, at:SHOW VARIABLES LIKE 'secure_file_priv';
Mit resultat:
+------------------+--------+ | Variable_name | Value | +------------------+--------+ | secure_file_priv | /data/ | +------------------+--------+
I dette eksempel kan jeg kun læse filer fra /data/ bibliotek.