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

Linux 下 MySQL 數據導入、導出與備份完整指南

     編輯:MySQL 綜合教學

Linux 下 MySQL 數據導入、導出與備份完整指南

在 MySQL 中提供了多種數據導入方式,例如 mysqlimport 工具、SQL 語句導入以及編寫專屬導入程式。通常數據導入的基本流程可分為三步:

  1. 確定數據源:按固定格式存儲的文本文件或 SQL 文件。
  2. 確定目標表結構:依據導入文件格式建立對應的數據表,若表不存在則需先創建。
  3. 執行導入命令:將數據寫入目標表中。

實戰演示:使用 mysqlimport 導入文本數據

1. 準備數據源

建立一個以 Tab 鍵分隔字段的文本文件 myuser.txt:

# cat myuser.txt
zhao	25	8	2015-1-1
qian	22	4	2014-5-6
sun	31	1	2013-12-7
li	40	6	2014-12-12
zhou	45	3	2015-2-8
wu	18	1	2014-9-12
zheng	44	9	2012-10-12
wang	29	12	2015-3-6

2. 創建目標表

登入 MySQL 並建立結構對應的表 user_import:

mysql> use db_users;
mysql> create table user_import (
    name varchar(32) not null primary key,
    age int,
    level int,
    login_date date
);
mysql> desc user_import;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| name       | varchar(32) | NO   | PRI | NULL    |       |
| age        | int(11)     | YES  |     | NULL    |       |
| level      | int(11)     | YES  |     | NULL    |       |
| login_date | date        | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

3. 執行導入

mysqlimport 是 MySQL 官方提供的導入工具,語法為:

mysqlimport [options] db_name textfile.txt

實際操作示例:

# 將文件複製到數據目錄(視環境而定)
# cp /home/allen/user_import.txt /var/lib/mysql/db_users/

# 執行導入
# mysqlimport -uroot -pxxx db_users user_import.txt
db_users.user_import: Records: 8  Deleted: 0  Skipped: 0  Warnings: 0

# 若主鍵衝突可使用 -d 參數(刪除原有數據後導入)
# mysqlimport -d -uroot -p db_users user_import.txt

4. 驗證導入結果

mysql> select * from user_import;
+-------+------+-------+------------+
| name  | age  | level | login_date |
+-------+------+-------+------------+
| zhao  |   25 |     8 | 2015-01-01 |
| qian  |   22 |     4 | 2014-05-06 |
| sun   |   31 |     1 | 2013-12-07 |
| li    |   40 |     6 | 2014-12-12 |
| zhou  |   45 |     3 | 2015-02-08 |
| wu    |   18 |     1 | 2014-09-12 |
| zheng |   44 |     9 | 2012-10-12 |
| wang  |   29 |    12 | 2015-03-06 |
+-------+------+-------+------------+

處理非預設分隔符

若數據源使用逗號或其他字符分隔,可透過 --fields-terminated-by 參數指定:

# mysqlimport -uroot -pxxx --fields-terminated-by=, db_users user_import2.txt

數據導出與備份:mysqldump

mysqldump 是 MySQL 專門用於數據導出與備份的工具,可將資料庫、表、存儲過程以 SQL 腳本形式導出。

基本用法

# 導出整個資料庫
# mysqldump -u root -p db_users > db_users.sql

# 查看導出文件
# ls -al db_users.sql
-rw-r--r--. 1 root root 6366 Jun 10 22:52 db_users.sql

導出文件包含表結構、數據插入語句及必要的會話變量設置,可直接用於恢復。

數據恢復的多種方式

方式一:使用 mysql 命令管道導入

# mysql -u root -p db_users2 < db_users.sql

方式二:在 MySQL 客戶端使用 source 命令

mysql> create database db_users3;
mysql> use db_users3;
mysql> source db_users.sql

單表備份與導入:SELECT ... INTO OUTFILE 與 LOAD DATA INFILE

針對單表數據備份,可使用以下組合:

-- 導出表數據到文件
mysql> select * into outfile 'tbbk_users' from tb_users;
Query OK, 13 rows affected (0.00 sec)

-- 從文件導入數據到表
mysql> load data infile 'tbbk_users' into table tb_users;
Query OK, 13 rows affected, 13 warnings (0.00 sec)

提示:LOAD DATA INFILE 預設分隔符為 Tab,若文件格式不同需配合 FIELDS TERMINATED BY 等子句使用。

總結

  • mysqlimport:適合大批量文本數據快速導入,支援自定義分隔符。
  • mysqldump:標準備份工具,輸出可移植的 SQL 腳本,支援庫級、表級導出。
  • SELECT INTO OUTFILE / LOAD DATA INFILE:單表數據遷移的高效組合,適合同架構環境間的數據複製。
  • 生產環境建議結合定時任務與異地存儲落地備份策略,並定期演練恢復流程。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved