程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql導入導出,mysql導入導出數據庫

Mysql導入導出,mysql導入導出數據庫

編輯:MySQL綜合教程

Mysql導入導出,mysql導入導出數據庫


1.導出

1.1 導出全庫備份到本地的目錄

1 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --lock-all-tables --add-drop-database -A > db.all.sql

1.2 導出指定庫到本地的目錄(例如mysql庫)

1 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --databases mysql > db.sql

1.3 導出某個庫的表到本地的目錄(例如mysql庫的user表)

1 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --tables mysql user> db.table.sql

1.4 導出指定庫的表(僅數據)到本地的目錄(例如mysql庫的user表,帶過濾條件)

1 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --no-create-db --no-create-info --tables mysql user --
2 where="host='localhost'"> db.table.sql

1.5 導出某個庫的所有表結構

1 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --no-data --databases mysql > db.nodata.sql

1.6 導出某個查詢sql的數據為txt格式文件到本地的目錄(各數據值之間用"制表符"分隔)

  例如sql為'select user,host,password from mysql.user;

1 mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 --skip-column-names -B -e 'select user,host,password from mysql.user;' > mysql_user.txt

1.7 導出某個查詢sql的數據為txt格式文件到MySQL服務器

  登錄MySQL,將默認的制表符換成逗號.(適應csv格式文件),指定的路徑,mysql要有寫的權限.最好用tmp目錄,文件用完之後,再刪除!

1 SELECT user,host,password FROM mysql.user INTO OUTFILE '/tmp/mysql_user.csv' FIELDS TERMINATED BY ',';

2.導入

2.1 恢復全庫數據到MySQL,因為包含mysql庫的權限表,導入完成需要執行FLUSH PRIVILEGES命令

1 第一種方法:
2 mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 < db.all.sql
3 第二種方法:
4 登錄MySQL,執行source命令,後面的文件名要用絕對路徑.
5 ......
6 mysql> source /tmp/db.all.sql;

2.2 恢復某個庫的數據(mysql庫的user表)

1 第一種方法:
2 mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 mysql < db.table.sql
3 第二種方法:
4 登錄MySQL,執行source命令,後面的文件名要用絕對路徑.
5 mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
6 ......
7 mysql> use mysql;
8 mysql> source /tmp/db.table.sql;

2.3 恢復MySQL服務器上面的txt格式文件(需要FILE權限,各數據值之間用"制表符"分隔)

1 mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
2 ......
3 mysql> use mysql;
4 mysql> LOAD DATA INFILE '/tmp/mysql_user.txt' INTO TABLE user ;

2.4 恢復MySQL服務器上面的csv格式文件(需要FILE權限,各數據值之間用"逗號"分隔)

1 mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
2 ......
3 mysql> use mysql;
4 mysql> LOAD DATA INFILE '/tmp/mysql_user.csv' INTO TABLE user FIELDS TERMINATED BY ',';

2.5 恢復本地的txt或csv文件到MySQL

1 mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
2 ......
3 mysql> use mysql;
4 # txt
5 mysql> LOAD DATA LOCAL INFILE '/tmp/mysql_user.csv' INTO TABLE user;
6 # csv
7 mysql> LOAD DATA LOCAL INFILE '/tmp/mysql_user.csv' INTO TABLE user FIELDS TERMINATED BY ',';

3.注意事項

3.1 關於MySQL連接

-u$USER 用戶名
-p$PASSWD 密碼
-h127.0.0.1 如果連接遠程服務器,請用對應的主機名或者IP地址替換
-P3306 端口
--default-character-set=utf8 指定字符集

3.2 關於mysql參數

--skip-column-names 不顯示數據列的名字
-B 以批處理的方式運行mysql程序.查詢結果將顯示為制表符間隔格式.
-e 執行命令後,退出

3.3 關於mysqldump參數

-A 全庫備份
--routines 備份存儲過程和函數
--default-character-set=utf8 設置字符集
--lock-all-tables 全局一致性鎖
--add-drop-database 在每次執行建表語句之前,先執行DROP TABLE IF EXIST語句
--no-create-db 不輸出CREATE DATABASE語句
--no-create-info 不輸出CREATE TABLE語句
--databases 將後面的參數都解析為庫名
--tables 第一個參數為庫名 後續為表名

3.4 關於LOAD DATA語法

如果LOAD DATA語句不帶LOCAL關鍵字,就在MySQL的服務器上直接讀取文件,且要具有FILE權限.
如果帶LOCAL關鍵字,就在客戶端本地讀取數據文件,通過網絡傳到MySQL.
LOAD DATA語句,同樣被記錄到binlog,不過是內部的機制.

4.SELECT...INTO OUTFILE

SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被選擇的行寫入一個文件中,該文件被創建到服務器主機上。
SELECT...INTO OUTFILE是LOAD DATA INFILE的補語;用於語句的exort_options部分的語法包括部分FIELDS和LINES子句,這些子句與LOAD DATA INFILE語句同時使用。
在下面的例子中,生成一個文件,各值用逗號隔開。這種格式可以被許多程序使用
SELECT * INTO OUTFILE '/tmp/result.txt'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM mysql.user;
將mysql數據庫的user表的數據導出到/tmp/result.txt
SELECT...INTO OUTFILE只能導出數據,不能導出結構,一般和load data聯合使用。

5.LOAD DATA INFILE

LOAD DATA INFILE語句用於高速地從一個文本文件中讀取行,並裝入一個表中。文件名稱必須為一個文字字符串。
由character_set_database系統變量指示的字符集被用於解釋文件中的信息。
LOAD DATA LOCAL INFILE '/tmp/result.txt' INTO TABLE test.user
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
把/tmp/result.txt的數據導入到test數據庫的user表。

6.導入導出格式

FIELDS TERMINATED BY ','                字段間分割符采用,號

OPTIONALLY ENCLOSED BY '"'     用"號將字段包圍,對數值型無效

LINES TERMINATED BY '\n'       記錄間隔符采用\n換行符

 

注:原文鏈接http://www.cnblogs.com/ggjucheng/archive/2012/11/13/2768485.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved