大批量数据导入时使用navicat导入效率不高,不过mysql官方提供LOAD DATA 语句,可以高效导入数据。
其基本语法如下
LOAD DATA
[LOW_PRIORITY | CONCURRENT] [LOCAL] --导入模式[最低优先级,需要别的sql执行完再执行|并行执行|指定local可以从客户端读取,没指定要在mysql服务器上读取]
INFILE 'file_name' -- 导入文件位置
[REPLACE | IGNORE] -- 冲突解决策略,对现有记录覆盖|跳过不处理
INTO TABLE tbl_name -- 指定需要插入的表
[PARTITION (partition_name [, 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
[, col_name_or_user_var] ...)]
[SET col_name={expr | DEFAULT}
[, col_name={expr | DEFAULT}] ...]
excel数据导入
1.创建表
CREATE TABLE `student` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(16) DEFAULT NULL,
`id_card` varchar(18) DEFAULT NULL,
`number` varchar(16) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
2.创建excel
3.文件另存为txt制表符
4.上传到服务器
5.进入mysql安装目录bin文件夹下执行./mysql -u root -p 进入mysql
6. 执行 LOAD DATA LOCAL INFILE '/data/xx.txt' REPLACE INTO TABLE student FIELDS TERMINATED BY '\t'; 或指定插入字段LOAD DATA LOCAL INFILE '/data/xx.txt' REPLACE INTO TABLE student FIELDS TERMINATED BY '\t' (id,name,id_card,number);
如遇ERROR 1300 (HY000): Invalid utf8 character string: ''问题,可将保存的txt文档另存一次改为utf-8编码。