MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

मारियाडीबी में LOAD_FILE () कैसे काम करता है

मारियाडीबी में, LOAD_FILE() फ़ंक्शन एक फ़ाइल पढ़ता है और फ़ाइल सामग्री को एक स्ट्रिंग के रूप में देता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

LOAD_FILE(file_name)

जहां file_name फ़ाइल का पूरा पथ नाम है।

उदाहरण

मान लीजिए हमारे पास pets.csv . नाम की एक फ़ाइल है जिसमें निम्नलिखित पाठ है:

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

हम LOAD_FILE() . का उपयोग कर सकते हैं उन सामग्रियों को पढ़ने और वापस करने के लिए कार्य:

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

परिणाम:

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

इस मामले में, फ़ाइल का पूरा पथ /Users/barney/data/pets.csv है ।

गलत फ़ाइल पथ या विशेषाधिकार

एक फ़ाइल पथ प्रदान करना जो निम्न मानदंडों को पूरा नहीं करता है, परिणाम null . में होता है :

  • फ़ाइल सर्वर होस्ट पर स्थित होनी चाहिए, आपको फ़ाइल का पूरा पथ नाम निर्दिष्ट करना होगा, और आपके पास FILE होना चाहिए विशेषाधिकार।
  • फ़ाइल सभी के द्वारा पठनीय होनी चाहिए और यह max_allowed_packet के बाइट्स में आकार से कम होनी चाहिए सिस्टम चर।
  • यदि secure_file_priv सिस्टम चर एक गैर-रिक्त निर्देशिका नाम पर सेट है, लोड की जाने वाली फ़ाइल उस निर्देशिका में स्थित होनी चाहिए।

यहां उन दो सिस्टम चरों की जांच करने का तरीका बताया गया है:

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

परिणाम:

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

मेरे मामले में, मेरे पास secure_file_priv . में निर्दिष्ट कोई निर्देशिका नहीं है सिस्टम चर, और मेरा max_allowed_packet वैरिएबल अपने डिफ़ॉल्ट पर सेट है (जो कि मेरे द्वारा पिछले उदाहरण में अपलोड की गई फ़ाइल के लिए पर्याप्त से अधिक है)।

हालांकि, जब मैं ऐसी फ़ाइल अपलोड करने का प्रयास करता हूं जो मौजूद नहीं है तो यहां क्या होता है:

SELECT LOAD_FILE('pets.csv');

परिणाम:

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

इस मामले में, मैं फ़ाइल का पूरा पथ निर्दिष्ट करना भूल गया।

मल्टी-बाइट फ़ाइल नाम

character_set_filesystem सिस्टम वेरिएबल का उपयोग फ़ाइल नामों की व्याख्या को नियंत्रित करने के लिए किया जाता है जो कि शाब्दिक स्ट्रिंग्स के रूप में दिए जाते हैं। इसका उपयोग character_set_client से स्ट्रिंग अक्षर के रूप में निर्दिष्ट फ़ाइल नामों को परिवर्तित करने के लिए किया जाता है करने के लिए character_set_filesystem फ़ाइल खोलने से पहले।

डिफ़ॉल्ट रूप से, character_set_filesystem binary . पर सेट है , इसलिए कोई रूपांतरण नहीं होता है।

आप निम्न कोड का उपयोग करके इस मान की जांच कर सकते हैं:

SELECT @@GLOBAL.character_set_filesystem;

परिणाम:

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

शून्य फ़ाइल पथ

एक null प्रदान करना फ़ाइल पथ परिणाम null :

SELECT LOAD_FILE(null);

परिणाम:

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

फ़ाइल पथ अनुपलब्ध

फ़ाइल पथ प्रदान करने में विफल होने से त्रुटि होती है:

SELECT LOAD_FILE();

परिणाम:

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. कैसे LOG2 () मारियाडीबी में काम करता है

  2. कैसे CHARSET () मारियाडीबी में काम करता है

  3. मारियाडीबी में डेटाटाइम वैल्यू से घंटे कैसे घटाएं?

  4. मारियाडीबी में नया क्या है 10.4

  5. मारियाडीबी में केवल अल्फ़ान्यूमेरिक वर्ण वाली पंक्तियों को वापस करने के 2 तरीके