Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL kết xuất vào tệp văn bản CSV với tên cột ở trên cùng?

Tôi đã tìm ra cách xung quanh việc phải nhập những tên đó theo cách thủ công miễn là bạn đang chạy MySQL 5 trở lên. Nó đây, được viết dưới dạng tập lệnh bash để chạy trên dòng lệnh 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

Mặc dù không phải là giải pháp duyên dáng nhất nhưng tôi chắc chắn rằng nó có thể được nén thành một dòng bởi một người biết SQL và / hoặc giỏi hơn tôi một chút ...

Những gì nó làm là:

  1. sử dụng lược đồ thông tin của MySQL để tạo tiêu đề CSV w / cột trống
  2. nối thêm một dòng mới vào CSV trống đó để dữ liệu của bạn sẽ bắt đầu xuất hiện một dòng mới
  3. sử dụng truy vấn khá chuẩn "SELECT * INTO OUTFILE ..." để tạo CSV đầy dữ liệu
  4. nối tệp dữ liệu vào tệp w / tiêu đề cột
  5. xóa tệp dữ liệu (tạm thời)

Chúc bạn may mắn và nếu bạn làm sạch nó, hãy đăng kết quả của bạn!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tên cơ sở dữ liệu MySQL mặc định

  2. Tôi có thể đặt WHERE col LIKE '%' chọn giá trị NULL không?

  3. Truy vấn tiêu chí ngủ đông để lấy các cột cụ thể

  4. Git bash trên windows 7. Lệnh mysqldump không hoạt động

  5. so sánh ngày mysql với date_format