將excel文件導入到資料庫
- 2019 年 10 月 5 日
- 筆記
參考:http://blog.csdn.net/jayxujia123/article/details/13684313
參考:http://kevin850115.iteye.com/blog/578142
MySQL官網:http://dev.mysql.com/doc/refman/5.7/en/load-data.html
學弟有個面試題,在群里問了下如何將excel文件導入到資料庫。以前也沒試過,正好在學習MySQL,練練手吧。
首先,將excel文件另存為用逗號分隔的csv文件,傳到linux伺服器上,假設叫做test.csv。
用sed命令將第一行的列名稱去掉sed -i '1p' test.csv
然後建庫建表的命令的就得手工進行了,根據具體的表結構,大致命令如下:
> CREATE DATABASE `demo`;
> USE demo;
> CREATE TABLE `tb1` (
`id` int(4) NOT NULL PRIMARY KEY ,
`Name` char(10) DEFAULT NULL,
`Age` smallint(3) DEFAULT NULL,
`Sex` varchar(10) DEFAULT NULL,
`Mobile` bigint(15) DEFAULT NULL,
`Touzijingli` varchar(10) DEFAULT NULL,
`Job` varchar(10) DEFAULT NULL,
`Uname` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(隨便測試的,因此欄位類型選擇有點隨意,請大家無視)
> desc tb1;
確保表結構和我們的原始EXCEL 的一致後,可用執行導入數據操作了,如下:
> load data local infile '/root/test.csv' into table tb1 fields
terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by 'rn';
參數說明:
terminated by 跟的是欄位間的分隔符。
optionally enclosed by '"' 的意思就是無視這些個雙引號
escaped by 字元轉義,默認的是反斜杠(backslash: )
lines terminated by 'rn'; 換行標誌。windows下的換行是rn
官網更詳細的格式如下:
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'] ] [IGNORE number {LINES | ROWS}] [(col_name_or_user_var,…)] [SET col_name = expr,…]