從文字檔匯入
LOAD DATA 指令可以很方便得將 CSV 格式資料匯入到資料表,並且有錯誤處理的機制避免 duplicate-key 的產生,詳細資訊可以參考 help load data。另外在 shell 底下也能使用 mysqlimport 進行匯入,詳細使用方式請參考 mysqlimport --help
mysql> help LOAD DATA
Name: 'LOAD DATA'
Description:
Syntax:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]
LOAD DATA 預設欄位分隔為(tab), 但可以用 colums 參數修改分隔字符
mysql> LOAD DATA LOAD INFILE '/path/input.txt' INTO TABLE tb-example COLUMNS TERMINATED BY ',';
若系統是 windows, 由於 windows 的文字檔斷行字元是 \r\n, 所以要用 LINES 修改
mysql> LOAD DATA LOCAL INFILE 'C:\input.txt' INTO TABLE tb-example LINES TERMINATED BY '\r\n';
REPLACE | IGNORE 是 unique 欄位在匯入過程中,當遇到重複值時的處理方式,REPLACE 會進行覆蓋,IGNORE 則是直接略過。當兩者都不指定時,預設行為要看是否有加上 LOCAL 參數。若有 LOCAL時,預設同加上 IGNORE。若沒有 LOCAL 時,則是會跳出錯誤訊息並中止後續的匯入動作。
匯出到文字檔
利用 SELECT 語法的 INTO OUTFILE 'file name' 即可將資料表的內容進行篩選匯出成文字檔
沒有留言:
張貼留言