Mysql
 sql >> база данни >  >> RDS >> Mysql

Как работи функцията LOAD_FILE() в MySQL

В 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/ указател.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсете всички срещания на низ в база данни на mysql

  2. Постигане на MySQL Failover &Failback на Google Cloud Platform (GCP)

  3. Мога ли да използвам функция за стойност по подразбиране в MySql?

  4. STR_TO_DATE() Примери – MySQL

  5. Как мога да направя „вмъкване, ако не съществува“ в MySQL?