Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak działa funkcja LOAD_FILE() w MySQL

W MySQL funkcja LOAD_FILE() funkcja czyta plik i zwraca jego zawartość jako ciąg.

Składnia

Składnia wygląda tak:

LOAD_FILE(file_name)

Gdzie file_name to pełna ścieżka do pliku.

Przykład

Oto przykład, w którym wybieram zawartość z pliku:

SELECT LOAD_FILE('/data/test.txt') AS Result;

Wynik:

+------------------------------------------+
| Result                                   |
+------------------------------------------+
| This text is all that the file contains! |
+------------------------------------------+

Przykład bazy danych

Oto przykład tego, jak może wyglądać zapytanie podczas wstawiania zawartości pliku do bazy danych:

INSERT INTO MyTable (FileId, UserId, MyBlobColumn) 
VALUES (1, 20, LOAD_FILE('/data/test.txt'));

W tym przypadku kolumna MyBlobColumn ma typ danych BLOB (co pozwala na przechowywanie danych binarnych).

A teraz, gdy znajduje się w bazie danych, możemy go wybrać:

SELECT MyBlobColumn
  FROM MyTable
  WHERE UserId = 20;

Wynik:

+------------------------------------------+
| MyBlobColumn                             |
+------------------------------------------+
| This text is all that the file contains! |
+------------------------------------------+

Jeśli plik nie istnieje

Jeśli plik nie istnieje, NULL jest zwracany:

SELECT LOAD_FILE('/data/oops.txt') AS Result;

Wynik:

+--------+
| Result |
+--------+
| NULL   |
+--------+

Więcej powodów, dla których możesz uzyskać NULL

Otrzymasz również NULL nie jest spełniony jeden z następujących warunków:

  • Plik musi znajdować się na hoście serwera.
  • Musisz mieć FILE uprawnienia w celu odczytania pliku. Użytkownik, który ma FILE przywilej może odczytać dowolny plik na hoście serwera, który może być odczytywany na całym świecie lub przez serwer MySQL.
  • Plik musi być czytelny dla wszystkich, a jego rozmiar mniejszy niż max_allowed_packet bajty. Oto jak możesz to sprawdzić:
    SHOW VARIABLES LIKE 'max_allowed_packet';

    Mój wynik:

    +--------------------+----------+
    | Variable_name      | Value    |
    +--------------------+----------+
    | max_allowed_packet | 67108864 |
    +--------------------+----------+
  • Jeśli secure_file_priv zmienna systemowa jest ustawiona na niepustą nazwę katalogu, plik do załadowania musi znajdować się w tym katalogu. Oto jak możesz to sprawdzić:
    SHOW VARIABLES LIKE 'secure_file_priv';

    Mój wynik:

    +------------------+--------+
    | Variable_name    | Value  |
    +------------------+--------+
    | secure_file_priv | /data/ |
    +------------------+--------+

    W tym przykładzie mogę czytać tylko pliki z /data/ katalog.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alternatywa MySQL dla T-SQL'a WITH TIES

  2. Jaka jest różnica między utf8_general_ci a utf8_unicode_ci?

  3. Jak monitorować wiele instancji MySQL działających na tym samym komputerze — porady i wskazówki dotyczące ClusterControl

  4. Jak wykonać kopię zapasową i przywrócić bazę danych MySQL?

  5. JSON_SEARCH() – Znajdź ścieżkę do ciągu w dokumencie JSON w MySQL