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

MySQL शीर्ष पर कॉलम नामों के साथ CSV टेक्स्ट फ़ाइलों में डंप करता है?

जब तक आप MySQL 5 या उच्चतर चला रहे हैं, तब तक मैंने उन नामों को मैन्युअल रूप से दर्ज करने का एक तरीका निकाला है। यहाँ इसे यूनिक्स कमांड लाइन पर चलने के लिए बैश स्क्रिप्ट के रूप में लिखा गया है:

DBNAME=<database_name>
TABLE=<table_name>

FNAME=/path/to/output/dir/$(date +%Y.%m.%d)-$DBNAME.csv

#(1)creates empty file and sets up column names using the information_schema
mysql -u <username> -p<password> $DBNAME -B -e "SELECT COLUMN_NAME FROM information_schema.COLUMNS C WHERE table_name = '$TABLE';" | awk '{print $1}' | grep -iv ^COLUMN_NAME$ | sed 's/^/"/g;s/$/"/g' | tr '\n' ',' > $FNAME

#(2)appends newline to mark beginning of data vs. column titles
echo "" >> $FNAME

#(3)dumps data from DB into /var/mysql/tempfile.csv
mysql -u <username> -p<password> $DBNAME -B -e "SELECT * INTO OUTFILE '/var/mysql/tempfile.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' FROM $TABLE;"

#(4)merges data file and file w/ column names
cat /var/mysql/tempfile.csv >> $FNAME

#(5)deletes tempfile
rm -rf /var/mysql/tempfile.csv

जबकि सबसे सुंदर समाधान नहीं है, मुझे यकीन है कि इसे किसी ऐसे व्यक्ति द्वारा एक पंक्ति में संपीड़ित किया जा सकता है जो एसक्यूएल जानता है और/या मुझसे थोड़ा बेहतर बैश करता है...

यह क्या करता है:

  1. एक खाली CSV w/ कॉलम हेडर बनाने के लिए MySQL की सूचना स्कीमा का उपयोग करता है
  2. उस खाली सीएसवी में एक अतिरिक्त नई लाइन जोड़ता है ताकि आपका डेटा एक नई लाइन दिखाई देने लगे
  3. डेटा से भरा CSV बनाने के लिए एक सुंदर मानक "SELECT * INTO OUTFILE..." क्वेरी का उपयोग करता है
  4. डेटा फ़ाइल को फ़ाइल w/ कॉलम हेडर में जोड़ता है
  5. (अस्थायी) डेटा फ़ाइल को हटाता है

शुभकामनाएँ, और यदि आप इसे साफ़ करते हैं, तो अपने परिणाम पोस्ट करें!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL पर टाइमस्टैम्प से दिन/माह/वर्ष निकालें

  2. इसे MySQL से MySQLi में बदल रहे हैं?

  3. PHP का उपयोग करके MySQL इंजेक्शन सुरक्षा और भेद्यता संकेत

  4. पहली तालिका से सभी स्तंभों का चयन करने का बेहतर तरीका और आंतरिक तालिका में दूसरी तालिका से केवल एक स्तंभ का चयन करें

  5. SQLite/MySQL में कॉलम मान को कैसे प्रतिबंधित करें