Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL membuang ke file teks CSV dengan nama kolom di atas?

Saya menemukan jalan keluar karena harus memasukkan nama-nama itu secara manual selama Anda menjalankan MySQL 5 atau lebih tinggi. Ini dia, ditulis sebagai skrip bash untuk dijalankan pada baris perintah unix:

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

Meskipun bukan solusi yang paling anggun, saya yakin itu dapat dikompresi menjadi satu baris oleh seseorang yang tahu SQL dan/atau bash sedikit lebih baik dari saya...

Fungsinya adalah:

  1. menggunakan skema informasi MySQL untuk membuat CSV kosong dengan header kolom
  2. menambahkan baris baru ekstra ke CSV kosong tersebut sehingga data Anda akan mulai menampilkan baris baru
  3. menggunakan kueri "SELECT * INTO OUTFILE..." yang cukup standar untuk membuat CSV yang penuh dengan data
  4. menambahkan file data ke file dengan header kolom
  5. menghapus file data (sementara)

Semoga berhasil, dan jika Anda membersihkannya, posting hasilnya!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP mySQL - Bisakah Anda mengembalikan array terkait dengan indeks angka?

  2. MYSQL - Menggabungkan dua tabel

  3. Bisakah prosedur/fungsi tersimpan mengembalikan tabel?

  4. Jquery autocomplete dan PHP:mengisi bidang input dengan data dari database mySQL berdasarkan opsi yang dipilih di bidang pelengkapan otomatis

  5. Ubah format output untuk hasil baris perintah MySQL ke CSV