1. 程式人生 > 資料庫 >詳解Mysql匯出資料的幾種方式

詳解Mysql匯出資料的幾種方式

MySQL匯出資料的目的有很多種,如資料庫備份、表結構匯出、表資料匯出、分析資料採取等。

Part1 select into outfile

先說最短小精悍的select into outfile,這是小型資料庫分析資料最常用的採集資料方式,具體語法如下:
【select 語句】 into outfile 【匯出檔名】 【匯出引數】

【select語句】是經典的查詢SQL,可以指定列、可以有where條件、group、order、limit等。

【匯出檔名】是目標檔案的完整路徑。由於mysql賬戶的許可權問題,通常我們會將檔案匯出到臨時目錄,如/tmp/mysql/user/201810.csv

【匯出引數】

  • fields terminated by 'str':設定欄位之間的分隔符,預設值是"\t"。
  • fields enclosed by 'char':設定包括住欄位的值的符號,如單引號、雙引號等,預設情況下不使用任何符號。
  • fields optionally enclosed by 'char':設定括住CHAR、VARCHAR和TEXT等字元型欄位的分隔符,預設情況下不使用任何符號。
  • fields escaped by 'char':設定轉義字元,預設值為"\"。
  • lines starting by 'str':設定每行資料開頭的字元,可以為單個或多個字元。預設情況下不使用任何字元。
  • lines terminated by 'char':設定每行資料結尾的字元,可以為單個或多個字元。預設值是"\n"。

譬如:

select * from platform_user into outfile '/tmp/mysql/user/201810.csv' 
fields terminated by ',' 
     enclosed by '"'
lines starting by '\r'
     terminated by '\n';

如果匯出的資料,涉及到中文,開啟csv可能會看到亂碼。處理亂碼,首先要確保資料庫支援中文(通常設定UTF8編碼即可)

vim /etc/my.cnf,新增如下幾個選項:

[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
[mysql]
default-character-set=utf8

即便資料庫已經是utf8,匯出的檔案download本地依然可能有亂碼,在伺服器上less,tail看到的結果都是正常的?
在本地環境(windows)用記事本開啟csv,另存編碼格式ANSI即可,這是由於excel的編碼格式決定的。

Part2 mysqldump匯出資料

作為開發人員或者運維人員,mysqldump使用的頻率更高,因為它能做的事情更多。mysqldump屬於邏輯備份工具,因為它匯出的是結果,多以SQL的形式展示,並不記錄資料的變化過程。關於物理備份,可以參照一本名為“MySQL技術內幕”的書籍,其中有詳細的描述。

mysqldump的語法很簡單,即

mysqldump 【options】> dump.sql

但是options的可選引數卻很多,手冊上將他分了幾大類,連結option、檔案option、資料定義DDL option、Debug option、國際化option、叢集Replication option、格式 option、效能option、事務option等。感興趣的同學可以參照MYSQL官方手冊的定義,這裡僅介紹幾種常見的應用場景。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。