mysql数据导入导出经过下面的这种方式可以快速的实现百万千万级数据的快速导入导出。html
SELECT fields INTO OUTFILE 'file_name' [{FIELDS | COLUMNS} 字段 [TERMINATED BY 'string'] 字段之间分隔符号 [[OPTIONALLY] ENCLOSED BY 'char'] 字段被包含在char中间 [ESCAPED BY 'char'] 忽略字段里出现的char ] [LINES [STARTING BY 'string'] 忽略开头是string的行 [TERMINATED BY 'string'] 行分隔符 ] FROM test_table;
导出:mysql
secure_file_priv配置项sql
若是配置了这个,则只能导入到该目录下面。能够去改配置项,而后重启数据库
改成“”便可,改为null会致使不能导出。bash
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_privserver
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'] 字段被包含在char中间 [ESCAPED BY 'char'] 忽略字段里出现的char ] [LINES [STARTING BY 'string'] 忽略开头是string的行 [TERMINATED BY 'string'] 行分隔符 ] [IGNORE number {LINES | ROWS}] 忽略行/列 [(col_name_or_user_var,...)] 目的表的表字段名或者用户变量名 [SET col_name = expr,...] 设置表字段值
实例:htm
导入数据到数据库blog
建一个简单的用户表:文档
CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL DEFAULT '', `age` int(11) NOT NULL DEFAULT '0', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '建立时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建一个user.csv文件,数据以下;get
文本以下:
假设这个里面有不少不少用户,比方说20条。。。
LOAD DATA LOCAL INFILE 'D:\\test\\user.csv' INTO TABLE `user` FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES (`name`,@dummy, age)
将表里面的第一列用户名和第三列年龄导入到数据库中去,中间的中文名咱们不关心,不要。第一行是列名,不要。
PS:@dummy是看官方文档给的,就是个普通变量,给赋值,可是没用到,帮咱们实现了忽略列的做用。自己没提供忽略列的功能。
插入成功。
参考: