เมื่อต้องการ Export ข้อมูลเฉพาะคอลัมน์บางคอลัมน์ไปเป็นไฟล์ Text/CSV ให้ใช้ SELECT ... INTO OUTFILE ซึ่งเขียนไฟล์บน Server Side ได้โดยตรง
Syntax
SELECT yourColumnName FROM yourTableName INTO OUTFILE 'file_path' [CHARACTER SET charset] [FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\\\'] [LINES TERMINATED BY '\\n'];
สร้างตารางและข้อมูล
mysql> create table DemoTable (
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFirstName varchar(20),
StudentLastName varchar(20)
);
mysql> insert into DemoTable(StudentFirstName,StudentLastName)
values('John','Doe'),('David','Miller'),('John','Smith'),('Carol','Taylor'),('Sam','Williams');
Export เฉพาะ StudentLastName
mysql> select StudentLastName from DemoTable into outfile 'E:/StudentLastName.txt';
เนื้อหาไฟล์ (Tab-separated Default)
Doe Miller Smith Taylor Williams
ตัวเลือก Format ที่ใช้บ่อย
CSV Format (Excel เปิดได้)
SELECT StudentFirstName, StudentLastName FROM DemoTable INTO OUTFILE 'E:/students.csv' CHARACTER SET utf8mb4 FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\r\\n';
TSV (Tab-separated)
SELECT * FROM DemoTable INTO OUTFILE 'E:/students.tsv' FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n';
ข้อจำกัดและสิทธิ์
- FILE Privilege - User ต้องมีสิทธิ์ FILE
- Secure File Priv - ตรวจสอบ:
SHOW VARIABLES LIKE 'secure_file_priv'; - ถ้าเป็น NULL → Export ได้ทุกที่ | ถ้าเป็น Path → Export ได้เฉพาะโฟลเดอร์นั้น
- ไม่สามารถ Overwrite ไฟล์เดิมได้ - ต้องลบไฟล์เก่าก่อน หรือใช้ชื่อใหม่
- Path บน Server ไม่ใช่ Client
ทางเลือกอื่นสำหรับ Export
- mysqldump - Command line tool สำหรับ Backup/Export ทั้ง DB
- mysql -e "SELECT ..." > file.txt - Client side export (Tab-separated)
- MySQL Workbench - GUI Export to CSV/JSON/Excel
- SELECT ... INTO OUTFILE ... CHARACTER SET utf8mb4 - รองรับภาษาไทย