首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL import 與 dump 指令完整使用指南

     編輯:MySQL 資料庫相關知識

前言

mysqlimport 與 mysqldump 是 MySQL 官方提供的高效資料匯入/匯出工具,支援多種格式與進階選項,適合批次處理、備份還原與跨平台遷移。本文整理常用語法、參數表與實戰範例。

一、mysqlimport:文字檔高速匯入

基本語法

mysqlimport [選項] 資料庫名稱 文字檔案名稱

檔案名稱的第一個句點(.)之前即為資料表名稱。例如 Customers.txt 對應 Customers 表,Cus.to.mers.txt 對應 Cus 表。

常用選項速查表

選項說明
-d, --delete匯入前清空目標表
-f, --force遇錯誤仍繼續執行
-i, --ignore跳過唯一鍵衝突的行(保留舊資料)
-l, --lock-tables匯入前鎖定表,防止並發干擾
-r, --replace以新資料取代唯一鍵衝突的舊行
--fields-terminated-by=,指定欄位分隔符(預設 Tab)
--fields-enclosed-by=\"指定欄位包圍字元(如雙引號)
--lines-terminated-by=\n指定換行符(預設 newline)
--local從客戶端本機讀取檔案(解決權限/路徑問題)

實戰範例:逗號分隔、雙引號包圍的 CSV 匯入

mysqlimport -u root -p --local -r -l \
  --fields-terminated-by=, \
  --fields-enclosed-by=\" \
  Meet_A_Geek Orders.txt

說明:-r 更新重複鍵、-l 鎖表、--local 避免伺服器端找不到檔案(錯誤 Errcode: 2/13)。

二、批次處理:SQL 腳本匯入

將 SQL 指令寫入文字檔(如 New_Data.sql),再以 mysql -u root -p < New_Data.sql 執行。適用於大量 INSERT、結構變更或從日誌還原。

三、LOAD DATA INFILE:直接從檔案載入

LOAD DATA INFILE '/tmp/data.txt'
INTO TABLE doing
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
LIMIT 20;

四、mysqldump:資料庫完整備份與遷移

基本語法

mysqldump [選項] 資料庫名稱 [表名稱...] > 輸出檔案.sql

常見用法

  • 整庫備份:mysqldump -u root -p Meet_A_Geek > MeetAGeek_Dump_File.txt
  • 單表備份:mysqldump -u root -p Meet_A_Geek Orders > MeetAGeek_Orders.txt
  • 條件備份:mysqldump -u root -p --where=\"Order_ID > 2000\" Meet_A_Geek Orders > Special_Dump.txt

關鍵選項表

選項作用
--add-drop-table每張表前加 DROP TABLE IF EXISTS,還原不衝突
--add-locksINSERT 前後加鎖,加速匯入
-c, --complete-insert完整欄位名稱的 INSERT,跨庫遷移更安全
--single-transactionInnoDB 熱備份必備,取得一致性快照
--quick逐行輸出,不佔大量記憶體
-T, --tab=路徑產生 .sql(結構)與 .txt(資料)兩檔
-w, --where依條件篩選匯出資料
--opt開啟多項加速選項(預設開啟)

進階範例:匯出特定條件、CSV 格式供 Excel 開啟

mysqldump -u root -p \
  --where=\"Order_Date >= '2000-01-01'\" \
  --tab=/home/mark \
  --no-create-info \
  --fields-terminated-by=, \
  Meet_A_Geek Orders

五、SELECT ... INTO OUTFILE:另一種匯出方式

SELECT * INTO OUTFILE '/tmp/dump_file/doing_dump_2.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
FROM doing LIMIT 20;

總結

mysqlimport 適合大量文字檔高速載入;mysqldump 則是備份、遷移、跨版本升級的瑞士刀。善用 --single-transaction、--quick、--where 等選項,可大幅降低對線上服務的影響。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved