PHP और MySQL: एक क्वेरी को टैब डिलीट की गई फ़ाइल में निर्यात करें

mysql php लोगो

इस सप्ताह के अंत में मैं एक पेज बनाना चाहता था, जो किसी भी क्वेरी या टेबल को टैब डिलीट की गई फ़ाइल में बैकअप देगा। नेट पर निकले ज्यादातर उदाहरणों में कॉलम हार्ड-कोडेड होते हैं।

मेरे मामले में, मैं चाहता था कि कॉलम डायनामिक हों, इसलिए मुझे स्तंभ नामों के साथ शीर्ष लेख पंक्ति बनाने के लिए सभी तालिका फ़ील्ड नामों के माध्यम से पहले लूप करना था, और फिर शेष डेटा पंक्तियों के लिए सभी रिकॉर्ड्स के माध्यम से लूप करना था। मैंने हेडर भी सेट किया है ताकि ब्राउज़र फ़ाइल तिथि और टाइमस्टैम्पड के नाम के साथ फाइलटाइप (txt) में फ़ाइल डाउनलोड शुरू कर दे।

मैंने डेटाबेस को खुला और बंद कनेक्शन छोड़ दिया, लेकिन यहां परिणामी कोड है जो काफी अच्छा काम करता है:

$ आज = ​​तारीख ("यमदी");
हेडर ("सामग्री-प्रकार: एप्लिकेशन / ऑक्टेट-स्ट्रीम");
शीर्ष लेख ("सामग्री-विवाद: अनुलग्नक; फ़ाइल नाम = \" "। $। आज" _ Backup.txt \ "");
$ क्वेरी = "का चयन करें * से 'mytable` आदेश` myorder` ";
$ परिणाम = mysql_query ($ क्वेरी);
$ गिनती = mysql_num_rows ($ परिणाम);
$ फ़ील्ड = mysql_num_fields ($ परिणाम);
$ डेटा = "";
के लिए ($ i = 0; $ i> $ फ़ील्ड; $ i ++) {
$ फ़ील्ड = mysql_fetch_field ($ परिणाम, $ i);
$ डेटा। = $ फ़ील्ड-> नाम;
$ डेटा। = "\ t";
}
$ डेटा। = "\ n";
जबकि ($ पंक्ति = mysql_fetch_row ($ परिणाम)) {
के लिए ($ x = 0; $ x> $ फ़ील्ड; $ x ++) {
$ Field-> नाम $ पंक्ति [$ x] =;
$ डेटा। = $ फ़ील्ड-> नाम = $ पंक्ति [$ x];
$ डेटा। = "\ t";
}
$ डेटा। = "\ n";
}
इको $ डेटा;

कोड को अल्पविराम से अलग किए गए मानों के लिए भी आसानी से संशोधित किया जा सकता है।

14 टिप्पणियाँ

  1. 1
    • 2

      मुझे लगता है कि आप कर सकते थे!

      इस मामले में, मैं वास्तव में एक वेब एप्लिकेशन में 'बैकअप' लिंक बना रहा था, इसलिए PHP कार्यक्षमता वह है जो मुझे चाहिए। हालाँकि, मुझे कभी नहीं पता था कि आप सीधे MySQL स्टेटमेंट से एक फाइल को भी लिख सकते हैं। बहुत ही शांत!

      धन्यवाद!

      • 3

        आपका रास्ता निश्चित रूप से सबसे अच्छा तरीका होगा यदि MySQL सर्वर एक रिमोट मशीन पर है, क्योंकि यह संभवतः उस मशीन पर लिखने में सक्षम नहीं होगा जहां PHP be चल रहा है।

        खुशी अन्य दिशाओं और नई चीजों को इंगित करने के लिए हालांकि other

      • 4

        लेकिन आप बस एक फ़ाइल के लिए क्वेरी चला सकते हैं, और बस ब्राउज़र को उत्पन्न फ़ाइल पर पुनर्निर्देशित कर सकते हैं, या यदि सभी और विफल हो तो PHP के "रीडफ़ाइल" का उपयोग करें?

        आप ऐसा नहीं कर पाएंगे, यदि mysql सर्वर की फाइल सिस्टम तक पहुँच नहीं है ...

  2. 5

    महान पद। क्या आप mysql db में वापस टैब-सीमांकित फ़ाइल (जैसे आपने अभी बनाई है) को आयात / पुनर्स्थापित करने का एक आसान, मुफ्त / खुला स्रोत तरीका जानते हैं?

    • 6

      त्रुटि... mysqlimport?

      mysqlimport database_name --local backup.txt

      या SQL कमांड के साथ:

      LOAD DATA LOCAL INFILE 'backup.txt' INTO TABLE `my_table` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'

      Mysqlimport के साथ, फ़ाइल नाम को टेबल नाम से मिलान करना होता है (केवल कुछ देखने के लिए)

    • 7

      मैं उस सप्ताह के भीतर PHP में निर्माण करूँगा, नूह! ब्लॉइड एक MySQL मॉन्स्टर है! सभी इनपुट के लिए आपको धन्यवाद!!!

  3. 8

    मैंने अपने जीवन के 6 घंटे से अधिक समय तक काम करने की कोशिश में खो दिया, क्यों इंटरनेट एक्सप्लोरर 6/7 फाइलटाइप 'html' को लागू कर रहा था और हेडर में निर्दिष्ट मेरे कस्टम फ़ाइलनाम को स्वीकार नहीं कर रहा था .. और फाइलों को सहेजने की अनुमति भी नहीं दे रहा था .. जब उपयोगकर्ताओं को ऊपर इसी तरह से बनाई गई पाठ फ़ाइलों को डाउनलोड करने का प्रयास करना।

    मैं HTTPS का उपयोग कर रहा था और IE इन फ़ाइलों को कैश नहीं करता है।

    मुझे ब्रैंडन के द्वारा एक टिप्पणी पर समाधान मिला http://uk.php.net/header.

    वे कहते हैं:

    -
    मैंने अपने जीवन के छह घंटे केवल इंटरनेट एक्सप्लोरर 6 के लिए PHP के माध्यम से एक पीडीएफ फाइल भेजने के लिए निम्नलिखित विधि का उपयोग करने की कोशिश करते हुए खो दिए:

    एसएसएल का उपयोग करते समय, इंटरनेट एक्सप्लोरर ओपन / सेव डायलॉग के साथ संकेत देगा, लेकिन फिर कहता है "फाइल वर्तमान में अनुपलब्ध है या नहीं मिल सकती है। बाद में पुन: प्रयास करें।" बहुत खोज करने के बाद मुझे निम्नलिखित एमएसकेबी लेख के बारे में पता चला जिसका शीर्षक था "एसएसएल पर इंटरनेट एक्सप्लोरर फ़ाइल डाउनलोड कैश कंट्रोल हेडर के साथ काम नहीं करते" (केबीआईडी: 323308)

    PHP.INI डिफ़ॉल्ट रूप से एक सेटिंग का उपयोग करता है: session.cache_limiter = nocache जो "nocache" विकल्पों को शामिल करने के लिए Content-Cache और Pragma शीर्षलेखों को संशोधित करता है। आप PHP.INI में "nocache" को "सार्वजनिक" या "निजी" में बदलकर IE त्रुटि को समाप्त कर सकते हैं - यह सामग्री-कैश हेडर को बदल देगा और साथ ही प्रज्ञा हेडर को पूरी तरह से हटा देगा। यदि आप साइट-व्यापी सुधार के लिए PHP.INI को संशोधित नहीं कर सकते हैं या नहीं करना चाहते हैं, तो आप डिफ़ॉल्ट को अधिलेखित करने के लिए निम्नलिखित दो शीर्षलेख भेज सकते हैं:

    इसके काम करने के लिए आपको अभी भी ऊपर सूचीबद्ध सामग्री शीर्षलेखों को सेट करने की आवश्यकता होगी। कृपया ध्यान दें कि यह समस्या केवल इंटरनेट एक्सप्लोरर को प्रभावित करती है, जबकि फ़ायरफ़ॉक्स इस त्रुटिपूर्ण व्यवहार को प्रदर्शित नहीं करता है।
    -

    खैर .. कम से कम वह केवल 6 घंटे खो दिया ...

  4. 9

    यह अच्छा काम करता है। हालाँकि, मुझे बस एक पंक्ति में एक स्थान से अलग सब कुछ मिलता है। मैं इस तरह से एक अलग लाइन पर सब कुछ प्रिंट करने के लिए इसे संशोधित करने की कोशिश कर रहा हूं:

    स्तम्भ1_नाम
    फ़ील्ड 1_वल्यू
    स्तम्भ2_नाम
    फ़ील्ड 1_वल्यू
    स्तम्भ3_नाम
    फ़ील्ड 1_वल्यू

    स्तम्भ1_नाम
    फ़ील्ड 2_वल्यू
    स्तम्भ2_नाम
    फ़ील्ड 2_वल्यू
    स्तम्भ3_नाम
    फ़ील्ड 2_वल्यू

    उदाहरण के लिए:

    नाम
    माइक
    स्थान
    काम
    संख्या
    1

    नाम
    नालिश करना
    स्थान
    होम
    संख्या
    2

    नाम
    जॉन
    स्थान
    यात्रा
    संख्या
    10

    और इसी तरह। क्या इस स्क्रिप्ट को ऐसा करने के लिए संशोधित किया जा सकता है?
    धन्यवाद!

    • 10

      जरुर हो सकता है।

      कुछ इस तरह की कोशिश करो:

      MyTableName INTO OUTFILE 'MyTableName_MySQL-TAB-DELIMITED-29JUN08.txt' से 'का चयन करें' 'n' लिनेज़ द्वारा '' n 'लिनेज़ द्वारा निर्धारित'

      यदि आप रिकॉर्ड समूहों के बीच एक डबल स्पेस (दो खाली लाइनें) चाहते हैं, तो बस "LINES TERMINATED BY '\ n \' कहें;" बजाय।

      "\ n' द्वारा समाप्त फ़ील्ड" भाग वह है जो एक टैब के बजाय प्रत्येक रिकॉर्ड के बाद एक नई लाइन डालता है। इसके बजाय एक टैब '\t' होगा।

      मारनाथ!

  5. 11

    यह निश्चित रूप से एक महान पद है, मैंने इसे आज़माया और महान काम किया, केवल एक चीज यह है कि मेरी txt फ़ाइल में शीर्ष लेख शीर्षकों के ऊपर एक अतिरिक्त पंक्ति है, और कुछ परिणाम 2 पंक्तियों में अलग हो गए हैं, यह मेरे पास मौजूद डेटा के कारण हो सकता है मेरे डेटाबेस में कोई विचार नहीं है, लेकिन यह फीड बनाने के लिए एक बड़ी मदद है ...

  6. 12

    Douglas Karr अपने कोड वास्तव में चट्टानों! यह विशेष रूप से उपयोगी है अगर आपको बस एक आउटपुट की आवश्यकता है जो टेक्स्टफाइल प्रारूप में है। आपका बहुत बहुत धन्यवाद! टीम फिलीपींस से!

  7. 13

    सुनो! क्या यहां से कोई है जो मुझे मेरे सामने के छोर के रूप में मेरे php का उपयोग करके अपने डेटाबेस (phpmyAdmin) को एक टेक्स्टफाइल आयात करने के बारे में संकेत दे सकता है। मुझे एक फ़ाइल डाउनलोड करने और इसे खोलने के बारे में एक विचार है, मेरी समस्या यह है कि मैं पंक्ति परिणाम कैसे प्राप्त कर सकता हूं और इसे मेरी तालिकाओं में कैसे सम्मिलित करूं, धन्यवाद

  8. 14

    कृपया कोई मुझे बता सकता है कि हेडर शीर्षकों के ऊपर http हेडर पंक्ति को कैसे हटाया जाए

तुम्हें क्या लगता है?

यह साइट स्पैम को कम करने के लिए अकिस्मेट का उपयोग करती है। जानें कि आपका डेटा कैसे संसाधित किया जाता है.