mysql load data 与 select into outfile 配合实现文本文件导入导出
2017-04-25 15:44
806 查看
mysql数据导入导出通过下面的这种方式能够快速的实现百万千万级数据的快速导入导出。
导出到文件中(select into outfile)
导出:
secure_file_priv配置项
如果配置了这个,则只能导入到该目录下面。可以去改配置项,然后重启
改为“”即可,改成null会导致不能导出。
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
导入文件中的数据到mysql表
实例:
导入数据到数据库
建一个简单的用户表:
建立一个user.csv文件,数据如下;
文本如下:
假设这个里面有很多很多用户,比方说20条。。。
将表里面的第一列用户名和第三列年龄导入到数据库中去,中间的中文名我们不关心,不要。第一行是列名,不要。
PS:@dummy是看官方文档给的,就是个普通变量,给赋值,但是没用到,帮我们实现了忽略列的作用。本身没提供忽略列的功能。
插入成功。
参考:
https://dev.mysql.com/doc/refman/5.7/en/load-data.html
导出到文件中(select into outfile)
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;
导出:
secure_file_priv配置项
如果配置了这个,则只能导入到该目录下面。可以去改配置项,然后重启
改为“”即可,改成null会导致不能导出。
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
导入文件中的数据到mysql表
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,...] 设置表字段值
实例:
导入数据到数据库
建一个简单的用户表:
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文件,数据如下;
文本如下:
假设这个里面有很多很多用户,比方说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是看官方文档给的,就是个普通变量,给赋值,但是没用到,帮我们实现了忽略列的作用。本身没提供忽略列的功能。
插入成功。
参考:
https://dev.mysql.com/doc/refman/5.7/en/load-data.html
相关文章推荐
- 快速的mysql导入导出数据(load data和outfile)
- MySQL通过自增一列在Select ... into outfile...里面实现CSV导出带字段的效果
- 使用DBI(perl) 实现文本文件导入导出mysql
- mysql文件导入到数据库load data infile into table 的使用例子
- mysql数据导入导出【mysqldump,source,outfile,load data infile】的比较
- MYSQL 数据导入导出LOAD DATA AND OUTFILE
- 解决select ... into outfile '..' mysql写文件权限问题
- mysql迁移-----拷贝mysql目录/load data/mysqldump/into outfile
- MySQL _LOAD DATA 导入 csv 文件到数据库表操作日志
- MySQL INTO OUTFILE导出导入数据|mysqldump
- MySQL INTO OUTFILE导出导入数据|mysqldump
- mysql load data infile 指定文件中的字段导入
- MySQL LOAD DATA导入TXT文件
- select into outfile 和load data infile 的用法
- select into outfile和load data infile
- MySql直接命令行执行select和load导入导出数据
- MySQL中使用load data命令实现数据导入的方法
- mysql迁移-----拷贝mysql目录/load data/mysqldump/into outfile
- Ubuntu+Mysql之从格式化文件导入数据库——Load Data 命令使用及local-infile=1用法
- MySQL INTO OUTFILE导出导入数据