天天看點

MySQL表資料的導入導出方法

導出資料的方法:

一、select into outfile

将表資料導出到一個文本檔案最簡單的方法是使用select...into outfile語句的查詢結果直接導出到OS層面上的檔案中。

該語句預設的列于列之間的分隔符為tab,行與行之間的資料分隔符為換行符,通過參數可以改變分隔符:

fields terminated by '';

lines terminated by '';

注意:

使用者必須要有file權限才能執行該語句;

由mysql伺服器直接建立輸出檔案,輸出檔案必須不存在;

示例:

mysql> select * from jiang into outfile '/tmp/jiang.txt';
[root@jiang tmp]# cat jiang.txt 
0	ling
1	ni
2	ai
3	zhou
4	jiang
5	wo

mysql> select * from jiang into outfile '/tmp/jiang.txt'
    -> fields terminated by '#*#';
[root@jiang tmp]# cat jiang.txt 
0#*#ling
1#*#ni
2#*#ai
3#*#zhou
4#*#jiang
5#*#wo           

二、mysqldump指令

mysqldump指令是邏輯備份中使用的指令,但是更常用mysqldump來導出一張表的資料。

常用格式:

導出一張完整的表(建表語句和表資料在同一檔案中):

mysqldump -u** -p** db_name tb_name > filename

mysqldump -u** -p** --single-transaction db_name --tables tb >file

導出一個或多個表(表結構和表資料分離)

mysqldump -u** -p** -T directory --fields-terminated-by '*' db [tb];

導入資料的方法

一、Load data

在mysql中建立一個新表,然後通過一個檔案将表的資料導入到這個表中,而不用再手工通過insert輸入。

Load data完整文法:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'

     [REPLACE | IGNORE]

     INTO TABLE tbl_name

     [PARTITION (partition_name,...)]

     [CHARACTER SET charset_name]

     [{FIELDS | COLUMNS}  #檔案每一行的字段分隔符

         [TERMINATED BY 'string']  #指明每一行的字段分隔符是什麼

         [[OPTIONALLY] ENCLOSED BY 'char']

         [ESCAPED BY 'char']

     ]

     [LINES  #檔案中行與行之間的分隔符,預設回車

         [STARTING BY 'string']  #指明行之間的分隔符是什麼

         [TERMINATED BY 'string']

Load data示例:

建立一個新表shi,檔案shi在/mydata目錄下,将/mydata/shi檔案的資料導入到表shi中。

mysql> load data infile '/mydata/shi' into table shi fields terminated by ',';
Query OK, 83 rows affected (0.04 sec)
Records: 83  Deleted: 0  Skipped: 0  Warnings: 0
mysql> select count(*) from shi;
+----------+
| count(*) |
+----------+
|    83 |
+----------+           

二、mysqlimport

mysqlimport是mysql的一個載入資料的一個非常有效的工具,有兩個參數以及大量的選項可供選擇。作用就是将純資料的文本檔案導入到指定的資料庫和表中。

基本用法:

mysqlimport -u** -p** db_name data_file

注意:要導入的資料檔案data_file必須要在對應的資料庫的目錄下

常用選項:

-d or --delete 新資料導入表前删除表中原來的資料

-f or --force 不管是否遇到錯誤,都将強制插入資料

-i or --ignore 跳過或者忽略那些有相同唯一關鍵字的行

-l or --lock-tables 資料插入前鎖住表

-r or --replace 與-i相反,此選項将替代表中有相同唯一關鍵字的記錄