Sử dụng mệnh đề INTO OUTFILE để xuất kết quả truy vấn ra file văn bản trên server.
Tạo bảng
mysql> CREATE TABLE DemoTable (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentFirstName VARCHAR(20),
-> StudentLastName VARCHAR(20)
-> );
Chèn dữ liệu
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES('John', 'Doe');
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES('David', 'Miller');
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES('John', 'Smith');
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES('Carol', 'Taylor');
mysql> INSERT INTO DemoTable(StudentFirstName, StudentLastName) VALUES('Sam', 'Williams');
Xuất cột StudentLastName ra file
mysql> SELECT StudentLastName FROM DemoTable INTO OUTFILE 'E:/StudentLastName.txt';
Query OK, 5 rows affected (0.00 sec)
Định dạng file mặc định
- Tab-separated values (TSV)
- Newline-terminated lines
- NULL hiển thị là
\N - Không có header cột
Tùy chỉnh định dạng xuất
SELECT StudentLastName FROM DemoTable INTO OUTFILE 'E:/StudentLastName.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
Yêu cầu và lưu ý
- Cần quyền
FILEprivilege - File được tạo trên server, không phải client
- File không được tồn tại trước (sẽ báo lỗi)
- Đường dẫn phải accessible bởi MySQL server process
secure_file_privgiới hạn thư mục cho phép (check:SHOW VARIABLES LIKE 'secure_file_priv';)
Phương án thay thế (client-side)
# Command line mysql -u user -p -e "SELECT StudentLastName FROM DemoTable" dbname > output.txt # MySQL Workbench / DBeaver: Export → CSV/JSON/Excel