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 0ling 1ni 2ai 3zhou 4jiang 5wo 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: 83Deleted: 0Skipped: 0Warnings: 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相反,此選項將替代表中有相同唯一關鍵字的記錄