首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 查詢結果導出檔案:INTO OUTFILE 語法與權限陷阱

     編輯:MySQL 綜合教學

基本語法

SELECT * FROM table_name
INTO OUTFILE '/path/to/filename.txt'
[CHARACTER SET charset_name]
[FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\']
[LINES TERMINATED BY '\n'];

常用範例

-- 導出前 100 行至指定路徑 (需 MySQL 服務進程有寫入權限)
SELECT * FROM mytable LIMIT 100
INTO OUTFILE '/var/lib/mysql-files/export_100.txt';

-- 自訂分隔符 (CSV 風格)
SELECT id, name, email FROM users
INTO OUTFILE '/var/lib/mysql-files/users.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';

關鍵限制與權限 (必讀)

  1. 安全目錄限制: MySQL 5.7+ 預設啟用 secure_file_priv,導出路徑必須在該目錄下 (通常為 /var/lib/mysql-files/)。查看設定:SHOW VARIABLES LIKE 'secure_file_priv';。若為 NULL 則完全禁止導入導出。
  2. 檔案不可覆蓋: 目標檔案若已存在會報錯,需先刪除或更換檔名。
  3. 權限需求: 執行使用者需具備 FILE 權限 (GRANT FILE ON *.* TO 'user'@'host';)。
  4. 路徑是伺服器端: 檔案生成在 MySQL Server 主機,而非客戶端機器。

替代方案:客戶端導出 (無 FILE 權限/跨主機)

# 命令列導出 (Tab 分隔,含標頭)
mysql -u user -p -h host -D db -e "SELECT * FROM tbl" > local_file.tsv

# 使用 mysqldump 導出純資料 (可加 --tab 產生 txt)
mysqldump -u user -p -h host -D db --tables tbl --no-create-info --tab=/tmp/outdir
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved