MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana LOAD_FILE() Bekerja di MariaDB

Di MariaDB, LOAD_FILE() fungsi membaca file dan mengembalikan konten file sebagai string.

Sintaks

Sintaksnya seperti ini:

LOAD_FILE(file_name)

Dimana file_name adalah nama path lengkap ke file.

Contoh

Misalkan kita memiliki file bernama pets.csv yang berisi teks berikut:

1,"Wag","Dog"
2,"Bark","Dog"
3,"Meow","Cat"

Kita dapat menggunakan LOAD_FILE() berfungsi untuk membaca dan mengembalikan konten tersebut:

SELECT LOAD_FILE('/Users/barney/data/pets.csv');

Hasil:

+---------------------------------------------+
| LOAD_FILE('/Users/barney/data/pets.csv')    |
+---------------------------------------------+
| 1,"Wag","Dog"
2,"Bark","Dog"
3,"Meow","Cat" |
+---------------------------------------------+
1 row in set (0.186 sec)

Dalam hal ini, path lengkap ke file adalah /Users/barney/data/pets.csv .

Jalur atau Hak Istimewa File Salah

Menyediakan jalur file yang tidak memenuhi kriteria berikut menghasilkan null :

  • File harus berada di host server, Anda harus menentukan nama path lengkap ke file, dan Anda harus memiliki FILE hak istimewa.
  • File harus dapat dibaca oleh semua orang dan harus lebih kecil dari ukuran max_allowed_packet, dalam byte variabel sistem.
  • Jika secure_file_priv variabel sistem diatur ke nama direktori yang tidak kosong, file yang akan dimuat harus berada di direktori itu.

Berikut cara memeriksa kedua variabel sistem tersebut:

SELECT
    @@GLOBAL.secure_file_priv,
    @@GLOBAL.max_allowed_packet;

Hasil:

+---------------------------+-----------------------------+
| @@GLOBAL.secure_file_priv | @@GLOBAL.max_allowed_packet |
+---------------------------+-----------------------------+
| NULL                      |                    16777216 |
+---------------------------+-----------------------------+

Dalam kasus saya, saya tidak memiliki direktori yang ditentukan dalam secure_file_priv variabel sistem, dan max_allowed_packet saya variabel diatur pada defaultnya (yang lebih dari cukup untuk file yang saya unggah pada contoh sebelumnya).

Namun, inilah yang terjadi ketika saya mencoba mengunggah file yang tidak ada:

SELECT LOAD_FILE('pets.csv');

Hasil:

+-----------------------+
| LOAD_FILE('pets.csv') |
+-----------------------+
| NULL                  |
+-----------------------+
1 row in set (0.000 sec)

Dalam hal ini, saya lupa menentukan path lengkap ke file.

Nama File Multi-Byte

character_set_filesystem variabel sistem digunakan untuk mengontrol interpretasi nama file yang diberikan sebagai string literal. Ini digunakan untuk mengonversi nama file yang ditentukan sebagai string literal dari character_set_client ke character_set_filesystem sebelum membuka file.

Secara default, character_set_filesystem diatur ke binary , jadi tidak ada konversi yang terjadi.

Anda dapat memeriksa nilai ini menggunakan kode berikut:

SELECT @@GLOBAL.character_set_filesystem;

Hasil:

+-----------------------------------+
| @@GLOBAL.character_set_filesystem |
+-----------------------------------+
| binary                            |
+-----------------------------------+

Jalur File Null

Memberikan null jalur file menghasilkan null :

SELECT LOAD_FILE(null);

Hasil:

+-----------------+
| LOAD_FILE(null) |
+-----------------+
| NULL            |
+-----------------+
1 row in set (0.000 sec)

Jalur File Tidak Ada

Gagal memberikan jalur file menyebabkan kesalahan:

SELECT LOAD_FILE();

Hasil:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOAD_FILE'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB DAY() Dijelaskan

  2. HOUR() vs EXTRACT(HOUR ...) di MariaDB:Apa Bedanya?

  3. Bagaimana NVL() Bekerja di MariaDB

  4. Bagaimana FLOOR() Bekerja di MariaDB

  5. Bagaimana FROM_UNIXTIME() Bekerja di MariaDB