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
FILEhak istimewa. - File harus dapat dibaca oleh semua orang dan harus lebih kecil dari ukuran
max_allowed_packet, dalam byte variabel sistem. - Jika
secure_file_privvariabel 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'