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'